{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第10章 多元线性回归"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 初始化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 本章需要用到的库\n",
    "import itertools # 导入itertools库\n",
    "import numpy as np # 导入numpy库\n",
    "import pandas as pd # 导入pandas库\n",
    "import matplotlib.pyplot as plt # 导入matplotlib库\n",
    "from scipy import stats # 导入scipy库的stats模块\n",
    "from scipy.stats import pearsonr # 导入Pearson相关系数函数\n",
    "import statsmodels.api as sm # 导入statsmodels库\n",
    "from statsmodels.formula.api import ols # 导入普通最小二乘法函数\n",
    "from statsmodels.stats.anova import anova_lm # 导入方差分析函数\n",
    "from statsmodels.stats.outliers_influence import summary_table # 导入影响汇总表函数\n",
    "\n",
    "# 设置初始化\n",
    "plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.1 多元线性回归模型及其参数估计"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.1.1 回归模型与回归方程"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "多元线性回归模型：$y=\\beta_0+\\beta_1x_1+\\beta_2x_2+\\cdots+\\beta_kx_k+\\varepsilon$\n",
    "- $y$为因变量；\n",
    "- $x_1,x_2,\\cdots,x_k$为自变量；\n",
    "- $\\beta_0,\\beta_1,\\cdots,\\beta_k$为回归系数；\n",
    "- $\\varepsilon$为随机误差。\n",
    "\n",
    "估计的多元线性回归方程：$\\hat{y}=\\hat{\\beta}_0+\\hat{\\beta}_1x_1+\\hat{\\beta}_2x_2+\\cdots+\\hat{\\beta}_kx_k$"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.1.2 参数的最小二乘估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>餐馆编号</th>\n",
       "      <th>y</th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "      <th>x3</th>\n",
       "      <th>x4</th>\n",
       "      <th>x5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>53.2</td>\n",
       "      <td>163.0</td>\n",
       "      <td>168.6</td>\n",
       "      <td>6004</td>\n",
       "      <td>5</td>\n",
       "      <td>6.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>18.5</td>\n",
       "      <td>14.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>209</td>\n",
       "      <td>11</td>\n",
       "      <td>16.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>11.3</td>\n",
       "      <td>88.2</td>\n",
       "      <td>109.4</td>\n",
       "      <td>1919</td>\n",
       "      <td>10</td>\n",
       "      <td>18.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>84.7</td>\n",
       "      <td>151.6</td>\n",
       "      <td>277.0</td>\n",
       "      <td>7287</td>\n",
       "      <td>7</td>\n",
       "      <td>10.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>7.3</td>\n",
       "      <td>79.1</td>\n",
       "      <td>17.4</td>\n",
       "      <td>5311</td>\n",
       "      <td>15</td>\n",
       "      <td>17.5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   餐馆编号     y     x1     x2    x3  x4    x5\n",
       "0     1  53.2  163.0  168.6  6004   5   6.5\n",
       "1     2  18.5   14.5   22.5   209  11  16.0\n",
       "2     3  11.3   88.2  109.4  1919  10  18.2\n",
       "3     4  84.7  151.6  277.0  7287   7  10.0\n",
       "4     5   7.3   79.1   17.4  5311  15  17.5"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example10_1 = pd.read_csv('./pydata/chap10/example10_1.csv', encoding='gbk') # 读取数据\n",
    "example10_1.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.852</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.813</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   21.84</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>2.84e-07</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:29:56</td>     <th>  Log-Likelihood:    </th> <td> -91.170</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   194.3</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    19</td>      <th>  BIC:               </th> <td>   201.7</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     5</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>    4.2605</td> <td>   10.468</td> <td>    0.407</td> <td> 0.689</td> <td>  -17.649</td> <td>   26.170</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x1</th>        <td>    0.1273</td> <td>    0.096</td> <td>    1.327</td> <td> 0.200</td> <td>   -0.074</td> <td>    0.328</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x2</th>        <td>    0.1606</td> <td>    0.056</td> <td>    2.884</td> <td> 0.010</td> <td>    0.044</td> <td>    0.277</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x3</th>        <td>    0.0008</td> <td>    0.001</td> <td>    0.563</td> <td> 0.580</td> <td>   -0.002</td> <td>    0.004</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x4</th>        <td>   -0.3332</td> <td>    0.399</td> <td>   -0.836</td> <td> 0.414</td> <td>   -1.168</td> <td>    0.501</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x5</th>        <td>   -0.5746</td> <td>    0.309</td> <td>   -1.861</td> <td> 0.078</td> <td>   -1.221</td> <td>    0.072</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 2.669</td> <th>  Durbin-Watson:     </th> <td>   2.321</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.263</td> <th>  Jarque-Bera (JB):  </th> <td>   1.731</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.643</td> <th>  Prob(JB):          </th> <td>   0.421</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 3.071</td> <th>  Cond. No.          </th> <td>3.10e+04</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.<br/>[2] The condition number is large, 3.1e+04. This might indicate that there are<br/>strong multicollinearity or other numerical problems."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                      y   R-squared:                       0.852\n",
       "Model:                            OLS   Adj. R-squared:                  0.813\n",
       "Method:                 Least Squares   F-statistic:                     21.84\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           2.84e-07\n",
       "Time:                        17:29:56   Log-Likelihood:                -91.170\n",
       "No. Observations:                  25   AIC:                             194.3\n",
       "Df Residuals:                      19   BIC:                             201.7\n",
       "Df Model:                           5                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept      4.2605     10.468      0.407      0.689     -17.649      26.170\n",
       "x1             0.1273      0.096      1.327      0.200      -0.074       0.328\n",
       "x2             0.1606      0.056      2.884      0.010       0.044       0.277\n",
       "x3             0.0008      0.001      0.563      0.580      -0.002       0.004\n",
       "x4            -0.3332      0.399     -0.836      0.414      -1.168       0.501\n",
       "x5            -0.5746      0.309     -1.861      0.078      -1.221       0.072\n",
       "==============================================================================\n",
       "Omnibus:                        2.669   Durbin-Watson:                   2.321\n",
       "Prob(Omnibus):                  0.263   Jarque-Bera (JB):                1.731\n",
       "Skew:                           0.643   Prob(JB):                        0.421\n",
       "Kurtosis:                       3.071   Cond. No.                     3.10e+04\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "[2] The condition number is large, 3.1e+04. This might indicate that there are\n",
       "strong multicollinearity or other numerical problems.\n",
       "\"\"\""
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = ols(\"y~x1+x2+x3+x4+x5\", data=example10_1).fit() # 拟合回归模型\n",
    "model.summary() # 显示回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df</th>\n",
       "      <th>sum_sq</th>\n",
       "      <th>mean_sq</th>\n",
       "      <th>F</th>\n",
       "      <th>PR(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>10508.907564</td>\n",
       "      <td>10508.907564</td>\n",
       "      <td>92.738890</td>\n",
       "      <td>9.624821e-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1347.093656</td>\n",
       "      <td>1347.093656</td>\n",
       "      <td>11.887817</td>\n",
       "      <td>2.695895e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x3</th>\n",
       "      <td>1.0</td>\n",
       "      <td>85.431729</td>\n",
       "      <td>85.431729</td>\n",
       "      <td>0.753917</td>\n",
       "      <td>3.960742e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x4</th>\n",
       "      <td>1.0</td>\n",
       "      <td>40.485178</td>\n",
       "      <td>40.485178</td>\n",
       "      <td>0.357273</td>\n",
       "      <td>5.570824e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x5</th>\n",
       "      <td>1.0</td>\n",
       "      <td>392.537457</td>\n",
       "      <td>392.537457</td>\n",
       "      <td>3.464060</td>\n",
       "      <td>7.826181e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Residual</th>\n",
       "      <td>19.0</td>\n",
       "      <td>2153.026017</td>\n",
       "      <td>113.317159</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            df        sum_sq       mean_sq          F        PR(>F)\n",
       "x1         1.0  10508.907564  10508.907564  92.738890  9.624821e-09\n",
       "x2         1.0   1347.093656   1347.093656  11.887817  2.695895e-03\n",
       "x3         1.0     85.431729     85.431729   0.753917  3.960742e-01\n",
       "x4         1.0     40.485178     40.485178   0.357273  5.570824e-01\n",
       "x5         1.0    392.537457    392.537457   3.464060  7.826181e-02\n",
       "Residual  19.0   2153.026017    113.317159        NaN           NaN"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anova_table = anova_lm(model, typ=1) # 方差分析\n",
    "anova_table # 显示方差分析表"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的多元线性回归方程：$\\hat{y}=4.2605+0.1273x_1+0.1606x_2+0.0008x_3-0.3332x_4-0.5746x_5$\n",
    "\n",
    "各回归系数的实际意义：\n",
    "- $\\hat \\beta_1 = 0.1273$：当其他自变量不变时，周边居民人数每变动1万人，日均营业额平均变动0.1273万元；\n",
    "- $\\hat \\beta_2 = 0.1606$：当其他自变量不变时，用餐平均支出每变动1万元，日均营业额平均变动0.1606万元；\n",
    "- $\\hat \\beta_3 = 0.0008$：当其他自变量不变时，周边居民月平均收入每变动1元，日均营业额平均变动0.0008万元；\n",
    "- $\\hat \\beta_4 = -0.3332$：当其他自变量不变时，周边餐馆数每变动1个，日均营业额平均变动-0.3332万元；\n",
    "- $\\hat \\beta_5 = -0.5746$：当其他自变量不变时，距市中心距离每变动1km，日均营业额平均变动-0.5746万元。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.2 拟合优度和显著性检验"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.2.1 模型的拟合优度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型的多重决定系数为0.8518，即模型可解释总误差的85.18%\n"
     ]
    }
   ],
   "source": [
    "R2 = model.rsquared # 计算决定系数\n",
    "print(f'模型的多重决定系数为{R2:.4f}，即模型可解释总误差的{R2*100:.2f}%')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型的调整后决定系数为0.8128，即考虑自变量个数后模型可解释总误差的81.28%\n"
     ]
    }
   ],
   "source": [
    "R2_adj = model.rsquared_adj # 计算调整后决定系数, 为避免增加自变量而高估模型的解释能力\n",
    "print(f'模型的调整后决定系数为{R2_adj:.4f}，即考虑自变量个数后模型可解释总误差的{R2_adj*100:.2f}%')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.2.2 模型的显著性检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型的F值为21.8404，p值为0.0000\n"
     ]
    }
   ],
   "source": [
    "# 线性关系检验\n",
    "F = model.fvalue # 计算F值\n",
    "p_value = model.f_pvalue # 计算p值\n",
    "print(f'模型的F值为{F:.4f}，p值为{p_value:.4f}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于P<0.05, 模型的线性关系显著。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x1回归系数的t值为1.3266，p值为0.2004\n",
      "x2回归系数的t值为2.8836，p值为0.0095\n",
      "x3回归系数的t值为0.5633，p值为0.5798\n",
      "x4回归系数的t值为-0.8359，p值为0.4136\n",
      "x5回归系数的t值为-1.8612，p值为0.0783\n"
     ]
    }
   ],
   "source": [
    "# 回归系数检验\n",
    "t = model.tvalues # 计算t值\n",
    "p = model.pvalues # 计算p值\n",
    "print(f'x1回归系数的t值为{t.values[1]:.4f}，p值为{p.values[1]:.4f}')\n",
    "print(f'x2回归系数的t值为{t.values[2]:.4f}，p值为{p.values[2]:.4f}')\n",
    "print(f'x3回归系数的t值为{t.values[3]:.4f}，p值为{p.values[3]:.4f}')\n",
    "print(f'x4回归系数的t值为{t.values[4]:.4f}，p值为{p.values[4]:.4f}')\n",
    "print(f'x5回归系数的t值为{t.values[5]:.4f}，p值为{p.values[5]:.4f}')"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果表明：\n",
    "- x2的回归系数检验P<0.05，说明x2对y有显著影响。\n",
    "- 其余自变量对y的影响未通过显著性检验，但可能由于其他原因造成的（如多重共线性等）。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.2.3 模型诊断"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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RVyUepik0Em9+5XdiRrcyZEjR6hYsWKWpztPj9VqzdcxSfkhISGBY8eOUapUKZdd70REREScSwmTiIiIiIhIBgrW7WIREREREZFcpIRJREREREQkA0qYREREREREMlBo1mGyWq2cOXMGf3//m04/LCIiucswDC5dukS5cuUK3OQhOaFrk4iIc2TlulRoEqYzZ85QsWJFZ4chIlKonTx5kgoVKjg7DJeha5OIiHNl5rpUaBImf39/wHZSUhcyFRGR/BEXF0fFihXt38Vio2uTiIhzZOW6VGgSptRSh+LFi+uiJCLiJCo7c6Rrk4iIc2XmuqRCchERERERkQwoYRIREREREcmAEiYREREREZEMKGESERERERHJgBImERERERGRDChhEhERERERyUChmVY8JyxWg50RF4i+lEBpfx8aVC2Jh1lT44qIiIiIuKrc+g2vhOkm1u2PZMKqcCJjE+z7ygb4ML5jLdrWLuvEyEREREREJD25+RteJXk3sG5/JAMWhTmcaICo2AQGLApj3f5IJ0UmIiIiIiLpye3f8EqYMmCxGkxYFY6RznOp+yasCsdiTa+FiIiIiIjkt7z4Da+EKQM7Iy6kyUqvZQCRsQnsjLiQf0GJiIiIiEiGMvsbftexi5k+phKmDERfyvhEZ6ediIiIiIjkrcz+Nj93OfO/4ZUwZaC0v0+uthMRERERkbyV2d/mwcUy/xteCVMGGlQtSdkAHzKaeNCEbaaNBlVL5mdYIiIiIiKSgcz+hq9XJTDTx1TClAEPs4nxHWsBpDnhqdvjO9bSekwiIiIiIi4iL37DK2G6gba1yzK3W11CAhy77EICfJjbra7WYRIRERERcTG5/RteC9feRNvaZWldKyRXVgkWEREREZG8l5u/4V2yh+no0aO0aNECf39/WrZsyfHjxwEICwsjNDQUX19f2rRpQ3R0dL7E42E20bh6EI+Elqdx9SAlSyIiIiIiLi63fsO7ZMLUt29fKlWqxP79+wkKCmLgwIFYrVYef/xxOnTowKFDh/D19WXo0KHODlVERERERAowlyvJS0pKYuPGjezfv5/KlSvTu3dvunTpwubNm7lw4QKvvfYanp6ejB8/nmbNmnHlyhWKFi3q7LBFRERERKQAcrkepuTkZN5++22qVq0KwPnz5/H19WXbtm00aNAAT09bjhcaGorFYiEsLMyZ4YqI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5RXborS33grLl8Oddzo7MjslTCIiIiIikv/On7fNfPf997btp5+GefPA39+5cV3HZSd9iIyMpEWLFuzZs8e+r1GjRphMJvujVKlSzgtQRERERESyZ/t2qFPHlix5e8MHH8CiRS6XLIGLJkz9+vWjXLlybNmyxWF/TEwM69ev5+LFi1y8eJGjR486KUIREREREckyw4Dp0+Hee+HkSahRA377Dfr2dYnxSulxyYTpzTffJCIiIs3+2NhYqlatSokSJShRogTFixd3QnQiIiIiIpJlFy7AI4/ASy9BSgp07gy7dsHddzs7shtyyYSpVKlSVKlSJc3+mJgYxo0bh6+vL6GhoRw4cCD/gxMRERERkazZscNWgrdqla0Eb+5cWLzYJUvwrueSCVN6kpKSSEhI4JZbbiE8PJxatWrRp0+fDNsnJiYSFxfn8BARERERkXxkGPDOO9C8OZw4AdWr28Yv9e/vsiV413ObWfK8vLw4deoU5cuXB2DIkCE0atSI+Ph4fH1907SfNGkSEyZMyO8wRUREREQE4OJFeOYZ+PZb2/aTT8LHH4ObDatxmx4mk8lkT5YAAgMDAbh06VK67UePHk1sbKz9cfLkyXyJU0RERESk0Nu5E+rWtSVLRYrA7NmwdKnbJUvgRgnT6tWrqV69un37xIkT+Pn5ERwcnG57b29vihcv7vAQEREREZE8ZBjw3nvQrBkcOwbVqsGvv8Lzz7tNCd713CZhatiwIdHR0Xz88cdEREQwadIkevbsiclNT7yIiIiISIESEwOPPw4vvgjJybZ/37UL6tVzdmQ54jYJU3BwMEuXLmXq1KnUrVuX8uXL8/bbbzs7LBERERER+eMPWwne11+DlxfMmgXLl0OJEs6OLMdcetIHwzActtu1a0e7du2cFI2IiIiIiDgwDHj/fRg+3NarVLUqLFsG9es7O7Jc49IJk4iIiIiIuKjYWOjTB1assG3/73+wYEGB6FW6ltuU5ImIiIiIiIsIC7OV4K1YYSvBe/ddWLmywCVLoB4mERERERHJLMOAuXNh6FBISoLKlW0leA0aODuyPKOESUREREREbi4uDp57zpYgATzyCHzyCfz/+qgFlUryRERERETkxvbssU0PvmwZeHrC9Om2GfEKeLIE6mESEREREZGMGAZ8+CEMGQKJiVCpEixdCo0aOTuyfKOESURERERE0rp0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GzVqRHx8PL6+vg5tJ02axIQJE3L0fuouFRFxXy1btrT/u7e3N2vXrk23XdOmTWnatGk+RSUi+eb8eVsJ3po1tu2uXWHePKf1Kl2rQdWSlA3wISo2Id0b8yYgJMA2Zl6cz616mEwmkz1ZAggMDATg0qVLadqOHj2a2NhY++PkyZNZfj91l4qIFGxbtmyhR48e/PDDD84ORURy06+/QmioLVny8YGPPoLPP8+XZMliNdh+5Dzf7jnN9iPn061E8jCbGN/RttbT9f1cqdvjO9bShA8uwq16mFavXs2QIUM4cuQIACdOnMDPz89en34tb2/vHJdXqLtURMR9NWvWDE9PT4fJHAzDICUlhU8++YRbbrkFf39/atasSffu3Tl79qwToxWRXGEYMH06jB4NKSlQs6ZtFry77sqXt8/KRGFta5dlbre6adqHaGIxl+NWCVPDhg2Jjo7m448/5oEHHmDSpEn07NnTPlVsblN3qYiI+4qKiuKLL75I97kKFSoAUKdOHerUqcPs2bPzMzQRyQsXLtjWUlq1yrbduTN8+CH4++fL22dnXaW2tcvSulaIlq5xcW5VkhccHMzSpUuZOnUqdevWpXz58rz99tt59n7qLhURcV9+fn40bNiQhg0bcubMGTw8PAgODua2225j5syZVKlShZo1a1KlSpV8XapCRPLAjh22WfBWrQJvb9tYpcWLM0yWMlM2l5W2OZkozMNsonH1IB4JLU/j6kH6XemC3KqHCaBdu3a0a9cu395P3aUikhe0GHbeMwzbD5OrV68yduxYDMPAarUSGRlJYGAgffr0oUePHnh5eVG2rL7LRdySYcA778DIkbYSvFtusZXghYZm+JKslM1ltq0mCivY3C5hcgZ1l4pIbtJi2PkjtVzbz8+P/fv3Ozz3zz//8P7779O1a1eWLl3qjPBEJKcuXrSV4H33nW37qadskzsUL57hS7JSNpeVtpoorGBzq5I8Z1J3qYjkBi2GnX/2799PkSJF8PHxwc/PD19fX7y9vfHw8ODff/9l5syZvPDCC9x3332cO3fO2eGKSFbs3GkrwfvuOyhSBObMgSVLbpgsZaVsLqsldpoorGDLcsJ07SxChmHw5JNPpmkzderUnEUlBVZWaoZFChothp2/UlJSiI2NJSEhgatXrxIfH09iYiIWi4UmTZrw559/8tRTT9GpU6cMF0EX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btseMgTeftveq3Q9jRsVyT4lTJIpWmhURNyZ1Wqldu3ahIeHA5CSksJrr73GV199xb59+5wcnUgWff899OgBFy5AQAB88gn87383fZnGjYpkjxImyRQtNCoi7sbHx4crV67g4eGB2WzmzJkzAERERNCpUycuX77MnDlz8PDwcHKkIpmUnAyvvmrrSQKoXx+WLoVq1TJ9CC1KK5J1GsMkmaIBoyLibvz8/BySodQZ8X799VcaNmzInj17aNmypZOiE8miU6fgvvv+S5ZeeAG2bs1SsiQi2aMeJsmU1AGjAxaFYQKHyR80YFREXJGnp+MlLiEhgZkzZwJQo0YN5s2bB9gSqbZt21KlSpX8DlEkc9atg27d4Px5KF4c5s+HJ55wdlQihYYSJsk0DRgVEXdmGAanTp3CMBxn89y3bx/Lly/np59+clJkIhlISYFx42zrKQHUrQvLlkH16s6NS6SQUcIkWaIBoyLiLhITEx22fX19efvtt9m6dSuRkZE88cQTmEwmtm7dyuzZs50UpUgGTp+GLl3gl19s288/b1tbyUdjhUXym8YwSZZpoVERcQdBQUFYLBb79tWrVwE4f/48EydOpFq1akybNo277rqLL7/80llhiqS1fj2EhtqSJX9/28QOs2crWRJxEvUwiYhIgXT06FEAVqxYga+vL2PHjgWgZs2azJkzhyJFijBy5Ej27NnDokWLnBmqiE1KCrz2Grz1FhiGLWlatgxq1LjpSy1WQ9UfInlECZOIiBRoS5cupUqVKkydOpWvv/6anj17MmbMGEaOHMnPP/9MXFycs0MUgTNn4OmnYfNm2/aAATBjRqZ6ldbtj0wzvrisxheL5BqTcf3o1wIqLi6OgIAAYmNjKV68uLPDEREpVJzxHTxs2DBKlCjBihUrKFWqFC1btuTEiRPExsZy55132ttZLBaSkpKYlDqwPh/p2iQA/PgjdO0K585BsWLw0UfQuXOmXrpufyQDFoVx/Y+51L6lud3qKmkSSUdWvn81hklERAokf39/vL298fDw4MyZMyxYsIAFCxawa9cukpKS8Pb2xtvbGy8vrzRTkIvkC4vFNgvegw/akqW77oJduzKdLFmsBhNWhadJluC/5T8mrArHYi0U98ZF8oyuECIiUiBNmDABgB07dlCjRg3efvtt9uzZw4cffshHH33EwIEDGTdunJOjlEIr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mEhMTAz+/v5MmTKFp556CpPJROXKldN97U8//cTbb7/N1q1bGTJkCJMnT2bUqFEZvteKFSuoVq0aSUlJVKxYEQ8PDxISErh06RLVqlUDbBe9sWPH8txzz+X+HysiIvnmwoULFClShGLFigFQpEgRvLy8SExMxGw2s3//fgB69eqFl5cXv//+O3PnzqVIkSJcvHiRt956i6+++opevXrh6+vL+++/T6NGjQDbtcvb29v+XtOmTeP111932Jf6Pl5eXvbt4sWLc/r0acB2vYmNjcXHxweTyQTYbhIGBweTkJDg8LckJibi7++P2fzfvfzPP/+c3r17M2XKFL777jvMZjMxMTFYLBaqVKkCQEpKCuvXr+eOO+7IzVMr4kAJk0geSU5Ott+d8/T05MKFC+zatYvhw4cTFhbG4MGD+f333zGZTPj6+qZ5/Zdffkn//v358ssvadSoEatWraJ58+YcP36ct99+256EpbJYLEyePJnBgwfTpUsXunTpgoeHB0uWLGH+/Pn8+OOP9rhSL1wiIuK+nnrqKXbs2EGfPn0oWrQop0+f5scff6RYsWJpqgrMZjP+/v7ccccdjBo1infeeQeApKQkAgICSEhIoHfv3vbrUVJSkj0RAhgxYgQjRoxwOGavXr2oXbs2L730UrrxnTx5kho1auDj42NPhGJjYylevDgzZ87E19cXDw8PDMMgMTGRI0eOUL58eQCOHTvG4sWL2bNnDzVq1GDmzJmYzWb69+9PxYoVGTNmDGBLtK6NUyQvKGESySMRERF06NCBxMREYmNjadSoEe+99x7FixfH09OTHj16MG/ePPr06eOQwFy9epXXXnuNjz76iBUrVtC6dWsASpcuzbZt2+jbty/Vq1enf//+PPLII9StWxeTycT8+fM5ePAgpUuXxsPDgyFDhvDTTz9x8eJFLl++TO3atQHbRa9Hjx5OOSciIpJ7NmzYQNu2bRk1ahQtW7akV69etGrViqeeeirdsrfbbruN2267jTFjxjBo0CCH5yIjI/nll1+oWrUqYOthut65c+eIiorizjvvzFR8lStXJikpyb69fPlyJk6cyN69e3nrrbe4fPkykydPTve1r7zyCsnJyZQuXRovLy+aNGlCXFwcp06dws/Pjy+//NJ+zNtvvz1T8YhklxImkTxSs2ZN/vnnH7755huWLFnCkiVL2LFjB56e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",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 残差的正态性与方差齐性\n",
    "plt.subplots(1, 2, figsize=(10, 4)) # 设置画布大小\n",
    "\n",
    "plt.subplot(121) # 创建第一个子图\n",
    "plt.scatter(model.fittedvalues, model.resid) # 绘制散点图\n",
    "plt.axhline(0, linestyle='--') # 绘制e=0的直线\n",
    "plt.xlabel('拟合值') # 设置x轴标签\n",
    "plt.ylabel('残差') # 设置y轴标签\n",
    "plt.title('(a) 残差值与拟合值图', fontsize=15) # 设置子图标题\n",
    "\n",
    "ax2 = plt.subplot(122) # 创建第二个子图\n",
    "pplot = sm.ProbPlot(model.resid, fit=True) # 创建概率图对象\n",
    "pplot.qqplot(line='r', ax=ax2, xlabel='期望正态值', ylabel='标准化的观测值') # 绘制Q-Q图\n",
    "ax2.set_title('(b) 正态Q-Q图', fontsize=15) # 设置子图标题\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "诊断图表明：\n",
    "- 残差分布似乎不是很随机，可以考虑模型设定问题导致的异方差性；\n",
    "- 残差基本满足正态性假定。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.3 多重共线性及其处理"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.3.1 多重共线性及其识别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "      <th>x3</th>\n",
       "      <th>x4</th>\n",
       "      <th>x5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x1</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.738110</td>\n",
       "      <td>0.883217</td>\n",
       "      <td>-0.623146</td>\n",
       "      <td>-0.277501</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x2</th>\n",
       "      <td>0.738110</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.553441</td>\n",
       "      <td>-0.538228</td>\n",
       "      <td>-0.323101</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x3</th>\n",
       "      <td>0.883217</td>\n",
       "      <td>0.553441</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>-0.522543</td>\n",
       "      <td>-0.290963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x4</th>\n",
       "      <td>-0.623146</td>\n",
       "      <td>-0.538228</td>\n",
       "      <td>-0.522543</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.095279</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x5</th>\n",
       "      <td>-0.277501</td>\n",
       "      <td>-0.323101</td>\n",
       "      <td>-0.290963</td>\n",
       "      <td>0.095279</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x1        x2        x3        x4        x5\n",
       "x1  1.000000  0.738110  0.883217 -0.623146 -0.277501\n",
       "x2  0.738110  1.000000  0.553441 -0.538228 -0.323101\n",
       "x3  0.883217  0.553441  1.000000 -0.522543 -0.290963\n",
       "x4 -0.623146 -0.538228 -0.522543  1.000000  0.095279\n",
       "x5 -0.277501 -0.323101 -0.290963  0.095279  1.000000"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "corr = example10_1.iloc[:, 2:].corr() # 计算相关系数矩阵\n",
    "corr # 显示相关系数矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "      <th>x3</th>\n",
       "      <th>x4</th>\n",
       "      <th>x5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x1</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000876</td>\n",
       "      <td>0.179264</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x2</th>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004107</td>\n",
       "      <td>0.005513</td>\n",
       "      <td>0.115166</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x3</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004107</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.007367</td>\n",
       "      <td>0.15822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x4</th>\n",
       "      <td>0.000876</td>\n",
       "      <td>0.005513</td>\n",
       "      <td>0.007367</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.65052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x5</th>\n",
       "      <td>0.179264</td>\n",
       "      <td>0.115166</td>\n",
       "      <td>0.15822</td>\n",
       "      <td>0.65052</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          x1        x2        x3        x4        x5\n",
       "x1       0.0  0.000025       0.0  0.000876  0.179264\n",
       "x2  0.000025       0.0  0.004107  0.005513  0.115166\n",
       "x3       0.0  0.004107       0.0  0.007367   0.15822\n",
       "x4  0.000876  0.005513  0.007367       0.0   0.65052\n",
       "x5  0.179264  0.115166   0.15822   0.65052       0.0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "col = ['x1', 'x2', 'x3', 'x4', 'x5'] # 自变量名称\n",
    "df_pvalue = pd.DataFrame(columns=col, index=col) # 创建p值的数据框\n",
    "for i in range(2, 7): # 遍历自变量\n",
    "    for j in range(2, 7): # 遍历自变量\n",
    "        cor, p_value = pearsonr(example10_1.iloc[:, i], example10_1.iloc[:, j]) # 计算相关系数和p值\n",
    "        df_pvalue.iloc[i-2, j-2] = p_value # 将p值存入数据框\n",
    "df_pvalue # 显示p值的数据框"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自变量相关系数检验结果表明：\n",
    "- 只有x5(距市中心距离)与其他4个自变量之间的关系不显著，其他4个自变量两两之间均显著相关；\n",
    "- 多元线性回归模型中可能存在多重共线性。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x1</th>\n",
       "      <th>x2</th>\n",
       "      <th>x3</th>\n",
       "      <th>x4</th>\n",
       "      <th>x5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>VIF</th>\n",
       "      <td>8.233159</td>\n",
       "      <td>2.629940</td>\n",
       "      <td>5.184365</td>\n",
       "      <td>1.702361</td>\n",
       "      <td>1.174053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tolerance</th>\n",
       "      <td>0.121460</td>\n",
       "      <td>0.380237</td>\n",
       "      <td>0.192888</td>\n",
       "      <td>0.587420</td>\n",
       "      <td>0.851750</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 x1        x2        x3        x4        x5\n",
       "VIF        8.233159  2.629940  5.184365  1.702361  1.174053\n",
       "tolerance  0.121460  0.380237  0.192888  0.587420  0.851750"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算容忍度和VIF\n",
    "def vif(df_exog, exog_name):\n",
    "    exog_use = list(df_exog.columns) # 提取自变量名称\n",
    "    exog_use.remove(exog_name) # 剔除当前自变量\n",
    "    model = ols(f'{exog_name}~{\"+\".join(exog_use)}', data=df_exog).fit() # 拟合回归模型\n",
    "    rsq = model.rsquared # 计算决定系数\n",
    "    return 1. / (1. - rsq) # 返回方差膨胀因子\n",
    "\n",
    "df_vif = pd.DataFrame() # 创建空数据框\n",
    "for x in ['x1', 'x2', 'x3', 'x4', 'x5']: # 遍历自变量\n",
    "    vif_i = vif(example10_1.iloc[:, 2:], x) # 计算方差膨胀因子\n",
    "    df_vif.loc['VIF', x] = vif_i # 将方差膨胀因子存入数据框\n",
    "\n",
    "df_vif.loc['tolerance'] = 1 / df_vif.loc['VIF'] # 计算容忍度\n",
    "df_vif # 显示容忍度和方差膨胀因子"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果表明：\n",
    "- $VIF \\ge 5$ 表明存在多重共线性，需要进行处理。\n",
    "- $容忍度 > 0.1$ 表明多重共线性不严重。 "
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.3.2 变量选择与逐步回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>(x1, x2, x5)</td>\n",
       "      <td>191.632516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>(x1, x2, x4, x5)</td>\n",
       "      <td>192.754822</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>(x1, x2, x3, x5)</td>\n",
       "      <td>193.243588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>(x1, x2)</td>\n",
       "      <td>193.734732</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>(x2, x3, x5)</td>\n",
       "      <td>194.190603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>(x1, x2, x3, x4, x5)</td>\n",
       "      <td>194.340771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>(x2, x3, x4, x5)</td>\n",
       "      <td>194.555326</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>(x1, x2, x3)</td>\n",
       "      <td>194.922190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>(x2, x3)</td>\n",
       "      <td>194.929697</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>(x1, x2, x4)</td>\n",
       "      <td>195.387829</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>(x2, x3, x4)</td>\n",
       "      <td>196.050629</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>(x1, x2, x3, x4)</td>\n",
       "      <td>196.527714</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>(x1, x5)</td>\n",
       "      <td>199.153728</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>(x1, x4, x5)</td>\n",
       "      <td>199.573538</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>(x1, x3, x5)</td>\n",
       "      <td>200.936231</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>(x2, x4, x5)</td>\n",
       "      <td>201.185015</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>(x1, x3, x4, x5)</td>\n",
       "      <td>201.415588</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>(x1,)</td>\n",
       "      <td>201.942091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>(x1, x4)</td>\n",
       "      <td>203.113630</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>(x2, x5)</td>\n",
       "      <td>203.378688</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>(x2, x4)</td>\n",
       "      <td>203.481164</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>(x1, x3)</td>\n",
       "      <td>203.898736</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>(x2,)</td>\n",
       "      <td>204.444292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>(x1, x3, x4)</td>\n",
       "      <td>205.093351</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>(x3, x4, x5)</td>\n",
       "      <td>209.465579</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>(x3, x4)</td>\n",
       "      <td>212.284702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>(x3, x5)</td>\n",
       "      <td>212.691589</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>(x3,)</td>\n",
       "      <td>214.164427</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>(x4, x5)</td>\n",
       "      <td>217.816439</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>(x4,)</td>\n",
       "      <td>222.711475</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>(x5,)</td>\n",
       "      <td>228.497919</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                       x         AIC\n",
       "17          (x1, x2, x5)  191.632516\n",
       "27      (x1, x2, x4, x5)  192.754822\n",
       "26      (x1, x2, x3, x5)  193.243588\n",
       "5               (x1, x2)  193.734732\n",
       "22          (x2, x3, x5)  194.190603\n",
       "30  (x1, x2, x3, x4, x5)  194.340771\n",
       "29      (x2, x3, x4, x5)  194.555326\n",
       "15          (x1, x2, x3)  194.922190\n",
       "9               (x2, x3)  194.929697\n",
       "16          (x1, x2, x4)  195.387829\n",
       "21          (x2, x3, x4)  196.050629\n",
       "25      (x1, x2, x3, x4)  196.527714\n",
       "8               (x1, x5)  199.153728\n",
       "20          (x1, x4, x5)  199.573538\n",
       "19          (x1, x3, x5)  200.936231\n",
       "23          (x2, x4, x5)  201.185015\n",
       "28      (x1, x3, x4, x5)  201.415588\n",
       "0                  (x1,)  201.942091\n",
       "7               (x1, x4)  203.113630\n",
       "11              (x2, x5)  203.378688\n",
       "10              (x2, x4)  203.481164\n",
       "6               (x1, x3)  203.898736\n",
       "1                  (x2,)  204.444292\n",
       "18          (x1, x3, x4)  205.093351\n",
       "24          (x3, x4, x5)  209.465579\n",
       "12              (x3, x4)  212.284702\n",
       "13              (x3, x5)  212.691589\n",
       "2                  (x3,)  214.164427\n",
       "14              (x4, x5)  217.816439\n",
       "3                  (x4,)  222.711475\n",
       "4                  (x5,)  228.497919"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 根据AIC进行变量选择\n",
    "step_reg = pd.DataFrame() # 创建空数据框\n",
    "x = ['x1', 'x2', 'x3', 'x4', 'x5'] # 自变量名称\n",
    "for i in range(1, len(x)+1): # 遍历自变量个数\n",
    "    for j in itertools.combinations(x, i): # 遍历所有非空子集\n",
    "        model = ols(f'y~{\"+\".join(j)}', data=example10_1).fit() # 拟合回归模型\n",
    "        step_reg_model = pd.DataFrame({'x': [j], 'AIC': [model.aic]})\n",
    "        step_reg = pd.concat([step_reg, step_reg_model], ignore_index=True) # 将结果存入数据框\n",
    "step_reg.sort_values(by='AIC', inplace=True) # 按AIC值升序排列\n",
    "step_reg # 显示AIC值的数据框 AIC越小越好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>            <td>y</td>        <th>  R-squared:         </th> <td>   0.844</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.822</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   37.85</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>1.19e-08</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:29:59</td>     <th>  Log-Likelihood:    </th> <td> -91.816</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   191.6</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    21</td>      <th>  BIC:               </th> <td>   196.5</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     3</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   -1.6893</td> <td>    6.252</td> <td>   -0.270</td> <td> 0.790</td> <td>  -14.692</td> <td>   11.313</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x1</th>        <td>    0.1902</td> <td>    0.048</td> <td>    3.923</td> <td> 0.001</td> <td>    0.089</td> <td>    0.291</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x2</th>        <td>    0.1576</td> <td>    0.051</td> <td>    3.120</td> <td> 0.005</td> <td>    0.053</td> <td>    0.263</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>x5</th>        <td>   -0.5698</td> <td>    0.294</td> <td>   -1.935</td> <td> 0.067</td> <td>   -1.182</td> <td>    0.043</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 3.491</td> <th>  Durbin-Watson:     </th> <td>   2.555</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.175</td> <th>  Jarque-Bera (JB):  </th> <td>   2.409</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.759</td> <th>  Prob(JB):          </th> <td>   0.300</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 3.092</td> <th>  Cond. No.          </th> <td>    495.</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                      y   R-squared:                       0.844\n",
       "Model:                            OLS   Adj. R-squared:                  0.822\n",
       "Method:                 Least Squares   F-statistic:                     37.85\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           1.19e-08\n",
       "Time:                        17:29:59   Log-Likelihood:                -91.816\n",
       "No. Observations:                  25   AIC:                             191.6\n",
       "Df Residuals:                      21   BIC:                             196.5\n",
       "Df Model:                           3                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept     -1.6893      6.252     -0.270      0.790     -14.692      11.313\n",
       "x1             0.1902      0.048      3.923      0.001       0.089       0.291\n",
       "x2             0.1576      0.051      3.120      0.005       0.053       0.263\n",
       "x5            -0.5698      0.294     -1.935      0.067      -1.182       0.043\n",
       "==============================================================================\n",
       "Omnibus:                        3.491   Durbin-Watson:                   2.555\n",
       "Prob(Omnibus):                  0.175   Jarque-Bera (JB):                2.409\n",
       "Skew:                           0.759   Prob(JB):                        0.300\n",
       "Kurtosis:                       3.092   Cond. No.                         495.\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 根据AIC的最小值选择最优模型的自变量为：x1、x2、x5\n",
    "model2 = ols(\"y~x1+x2+x5\", data=example10_1).fit() # 拟合回归模型\n",
    "model2.summary() # 显示回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df</th>\n",
       "      <th>sum_sq</th>\n",
       "      <th>mean_sq</th>\n",
       "      <th>F</th>\n",
       "      <th>PR(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>x1</th>\n",
       "      <td>1.0</td>\n",
       "      <td>10508.907564</td>\n",
       "      <td>10508.907564</td>\n",
       "      <td>97.339177</td>\n",
       "      <td>2.452138e-09</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>1347.093656</td>\n",
       "      <td>1347.093656</td>\n",
       "      <td>12.477509</td>\n",
       "      <td>1.975601e-03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x5</th>\n",
       "      <td>1.0</td>\n",
       "      <td>404.283704</td>\n",
       "      <td>404.283704</td>\n",
       "      <td>3.744694</td>\n",
       "      <td>6.655774e-02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Residual</th>\n",
       "      <td>21.0</td>\n",
       "      <td>2267.196677</td>\n",
       "      <td>107.961747</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            df        sum_sq       mean_sq          F        PR(>F)\n",
       "x1         1.0  10508.907564  10508.907564  97.339177  2.452138e-09\n",
       "x2         1.0   1347.093656   1347.093656  12.477509  1.975601e-03\n",
       "x5         1.0    404.283704    404.283704   3.744694  6.655774e-02\n",
       "Residual  21.0   2267.196677    107.961747        NaN           NaN"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anova_table2 = anova_lm(model2, typ=1) # 方差分析\n",
    "anova_table2 # 显示方差分析表"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最终估计的回归方程为：$\\hat{y}=-1.6893+0.1902x_1+0.1576x_2-0.5698x_5$\n",
    "\n",
    "各回归系数的实际意义：\n",
    "- $\\hat \\beta_1 = 0.1902$：当其他自变量不变时，周边居民人数每变动1万人，日均营业额平均变动0.1902万元；\n",
    "- $\\hat \\beta_2 = 0.1576$：当其他自变量不变时，用餐平均支出每变动1万元，日均营业额平均变动0.1576万元；\n",
    "- $\\hat \\beta_5 = -0.5698$：当其他自变量不变时，距市中心距离每变动1km，日均营业额平均变动-0.5698万元。\n",
    "\n",
    "$x_1$与$x_2$的回归系数检验P<0.05，$x_5$的回归系数检验P<0.10，与原模型的相比多重共线性得到了一定程度的缓解。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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T5Zbb72VMWPGEBERwWOPPcbWrVs5ffo0hw4dyteQ+cmTJxk5ciSBgYH4+/sDtqTgzJkzBAQEMH78+GztMzMzSUlJwcfHJ0fC9PXXXzN+/HiuuuoqkpOTsz2XlYDs37/fYcW+5s2b29/fmaypAleaMBWEyWTijTfesG9nZGTYKxJmOX/+PHfffTc7duwAbNX1NmzYQI0aNfI8/oEDB5g3bx7z589n/vz59ptvMzIy6NmzJydPnqR27do5OrqAgAAeeOABVq9eneOY69ato3v37nmez5iYGG699VZ8fX155plneP7556lYsSI33XQTffv25b///S/PPvtsnj+DiJQ9WRfowsPDnba55557CAkJoV+/fnz33XdMnDiR48ePO6zmmXWckydPFlnCZDKZOHjwoNPlLbKK6WSxWCxUrFiRBx54wOkx09LSeOqpp3j//ffp0qULI0eOZPLkycyePZuOHTvyn//8h48++oiWLVty11138eabb/L4449nO0ZiYiKGYVChQoUcx88qQpQV87Rp0zh//nyuP+dDDz1EQkICQL6OebnmzZvz3HPPMWLECLy9vbn77rtp06YNmZmZzJo1K0f8UjYoYRKn8uoAnnrqKebPn0+bNm3o0qUL0dHRzJo1i/j4eHsyc6mi7ACioqJYs2YN48aNY+LEiQA0adKEG264gc6dO9tHQJ577jnWrVtnT5YyMzPZs2cPW7duJTk5OcfoWbNmzXLc5/L5559z77338sYbbxTog3LJkiUYhsHy5ct58MEHsz2XNXqVNX/akUvvv3EkK2EaMWJEvq8Wtm3b1uGI1+WOHDmS494dR9LS0nIkTCEhIXTp0oXDhw+zcOFCunXrRlRUFGazGR8fn2wjd1kuXrzIhQsXqFevHm+++SZjxoxhwYIF9nnjv//+Oz/++COdO3emW7duOZJTLy8vPv7441zvs8srYQ4LC2PYsGG0a9eOpk2b4u3tTf/+/fH396dbt24Of6dFRABSUlIAnFY0Bbj22mvZvHkzfn5+pKSk0K5dO95//32GDh1K48aNs7WtVKlStuMWhaz7dJzdu/noo4/m2NeyZUunCdNvv/1G7969iYqK4o477uDjjz/GbDYzZMgQJk+ezJw5c/jPf/5DaGgomzZtolOnTjzxxBO88847DBw4kDvvvJNatWrZ+1xH9xFlzWDIWu5i7ty5/P3337n+nNdff729n8nPMS8XFBTEyy+/zN9//83bb7/N7t27qVatGjExMbz++utkZGTQq1cvrr766lzjkNJFCZM4lVsHEB8fz4IFC7j55pv5/vvv7V9G+/fvz9KlS1mwYEGOD+Wi6gBSU1MZPHgwFStWzDat7fDhw/zvf/+zb2dmZmKxWIiLi+OZZ57h559/Zu/evaSkpODl5UXbtm2zJUy7du2yr+106Rfvd955By8vLxo3buw0icgqv+rt7W0vWz1v3jy6d++eY72HS33++edcd911OfZfnmA58thjj3Hffffl2S5Lw4YN7VMRHElPT8disbBo0SJeffVVBg4cmGNa2+WSk5MdliEfO3YsTz75pL24Q0Fvgr766quzlZFt1KgRK1eupGXLlixdutTha+64445so19Zvv3223wtxmsymXjmmWdISkrizTffZNWqVYSEhODn58dXX33FqFGjeOSRR7jpppsK9LOISOmXdeEoPj7e6UXG0aNH24vkBAQEMGTIEAYMGMCXX36ZI2E6e/ZstuOWBMMwsm1nZmaSlpaWo11KSgpPPPEEy5Ytw2Kx8Mwzz/Daa6/Z+/zKlSszevRo7rzzTvtrateuze7duxk+fDgffPABgwcPZtKkSbz44ov2c3L5xUqLxYLFYgGwt8nvYsArV67M9zEvPwevvPIKX3zxBTt37iQ8PJzRo0czYMAALBYLEyZMYMyYMQwfPpwbbrihSG8zEPemhEmcyq0DqFy5MqmpqZjNZnuy9Msvv3DkyBEyMjKIiYnJMXe4qDqABQsWsGvXLj744AOeeuopbr/9dlq3bs2FCxe4+eabee2111i5ciX79++3J2cbNmzglltuYcCAAVx33XW0bNkyx4dly5Ytc33fvJ4H26jQt99+C4C/v3+uUxkAatWqxfXXX59jf17Tx8BWQSgrIclLSkoKVqvVvn7SpbZt28by5ctZvnw5CQkJVK9enXfeeYeuXbuyfv36bG33799PamoqN998M+np6SQkJFC7du0cx/Ty8sp3bPl111135fp8UFCQw3OZ3/UxVq1axUcffcQ333wD2NZTefDBB7npppt44403mDFjBq+99hpXX301jz76aIEWgBSR0i2rvzt16pTThOnyGQVZi3ZnrR13qaw19gqykHlR8/b2dvg5FxAQQOvWrdmyZQvvvPMOd999d442EydOJCkp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/vnnH1eHIm5KI0xS5mRd/SpsoQZPcuTIEapXr17gcueOWK3WEr0nqSSkpqby119/UaVKFbdd70RERERcSwmTiIiIiIiIE6XrcrGIiIiIiEgRUsIkIiIiIiLihBImERERERERJ8rMOkxWq5VTp04RFBSUZ/lhEREpWoZhkJyczNVXX13qiodcCfVNIiKuUZB+qcwkTKdOnaJ69equDkNEpEw7fvw411xzjavDcBvqm0REXCs//VKZSZiCgoIA20nJWshURERKRlJSEtWrV7d/FouN+iYREdcoSL9UZhKmrKkOFSpUUKckIuIimnaWnfomERHXyk+/pInkIiIiIiIiTihhEhERERERcUIJk4iIiIiIiBNKmERERERERJxQwiQiIiIiIuKEEiYREREREREnykxZ8aJksRrsij5HXHIqVYP8aVGrEl5mlcoVEREREXEXRfWdXQlTAW04EMOEtYeISUy17wsP9ieyewO6NAp3YWQiIiIiIgJF+51dU/IKYMOBGAYvjsp24gFiE1MZvDiKDQdiXBSZiIiIiIhA0X9nV8KUTxarwYS1hzAcPJe1b8LaQ1isjlqIiIiIiEhxK47v7EqY8mlX9LkcWeqlDCAmMZVd0edKLigREREREbHL73f23X+dz/cxlTDlU1yy8xNfmHYiIiIiIlK08vtd/MyF/H9nV8KUT1WD/Iu0nYiIiIiIFK38fhcPLZ//7+xKmPKpRa1KhAf746wQoQlb5Y0WtSqVZFgiIiIiIvL/8vudvVnNkHwfUwlTPnmZTUR2bwCQ4x8gazuyewOtxyQiIiIi4iLF8Z1dCVMBdGkUztw+TQkLzj6EFxbsz9w+TbUOk4iIiIiIixX1d3YtXFtAXRqF07lBWJGsGiwiIiIiIkWvKL+zK2EqBC+zidZ1Krs6DBERERERcaKovrNrSp6IiIiIiIgTSphEREREREScUMIkIiIiIiLihBImERERERERJ5QwiYiIiIiIOKGESURERERExAklTCIiIiIiIk4oYRIREREREXFCCZOIiIiIiIgTSphEREREREScUMIkIiIiIiLihFsmTEePHqVDhw4EBQXRsWNH/v77bwCioqKIiIggICCAO+64g7i4OBdHKiIiIiIil7NYDXYcieezvSfZcSQei9VwdUiF5pYJ0xNPPMG1117LgQMHqFy5MkOGDMFqtfLAAw/QrVs3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586xe/dunn/+eaKionjmmWf46aefMJlMBAQE5Hj9smXLePLJJ1m2bBmtWrVi7dq1tG/fnr///pvp06fbk7AsFouFqVOn8swzz9CrVy969eqFl5cXy5cvZ8GCBXz99df2uLI6LhER8VwPP/wwO3fuZODAgZQrV46TJ0/y9ddfU758+RyzCsxmM0FBQTRs2JDRo0cza9YsANLT0wkODiY1NZUBAwbY+6P09HR7IgQwcuRIRo4cme2Y/fv3p1GjRgwfPtxhfMePH+e6667D39/fngglJiZSoUIFZs+eTUBAAF5eXhiGQVpaGkeOHKFatWoA/PXXXyxdupS9e/dy3XXXMXv2bMxmM08++STVq1dn7NixgC3RujROkeKghEmkmERHR9OtWzfS0tJITEykVatWvPHGG1SoUAFvb28eeeQR5s2bx8CBA7MlMBcvXuSll17i3XffZfXq1XTu3BmAqlWrsn37dp544gnq1KnDk08+yb333kvTpk0xmUwsWLCA33//napVq+Ll5cXQoUP55ptvOH/+PBcuXKBRo0aArdN75JFHXHJORESk6GzatIkuXbowevRoOnbsSP/+/enUqRMPP/yww2lv119/Pddffz1jx47lqaeeyvZcTEwM33//PbVq1QJsI0yXO3PmDLGxsdx44435iq9GjRqkp6fbt1etWsXEiRPZt28fr7zyChcuXGDq1KkOX/vCCy+QkZFB1apV8fHxoU2bNiQlJXHixAkCAwNZtmyZ/Zg33HBDvuIRKSwlTCLFpF69evzxxx+sWbOG5cuXs3z5cnbu3Im3t+3P7umnnwbg6NGj9it627Zt4+GHH+aqq66iY8eODBgwINv0BACTycTcuXMZN24c69atY/fu3Rw7doxRo0YRFhZmbxcTE8Pw4cPp37+/fV///v35559/ivknFxGRkvToo4/aR5iy7pnNuocJyLYfbKNH06dP58KFC/j6+nLvvfcSFxfHQw89lK3N5TZs2MC8efOy3fuUX7t37+app55i8eLFREVFMWzYMBo3bkz79u25++67s7X9/PPP+fLLL7NN/zt8+DC7du2yT8UDsv2/SHFSwiRSAgzDYN26dYSEhNj3XX311QAcPHjQnjC1bt2a0aNHM2jQIMA2le/SaRVWq5WUlBTKlSvH/fffT0xMDCaTiY8//phu3bqRnJxsb2s2mxk1ahSTJ0+2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",
      "text/plain": [
       "<Figure size 1000x400 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 残差的正态性与方差齐性\n",
    "plt.subplots(1, 2, figsize=(10, 4)) # 设置画布大小\n",
    "\n",
    "plt.subplot(121) # 创建第一个子图\n",
    "plt.scatter(model2.fittedvalues, model2.resid) # 绘制散点图\n",
    "plt.axhline(0, linestyle='--') # 绘制e=0的直线\n",
    "plt.xlabel('拟合值') # 设置x轴标签\n",
    "plt.ylabel('残差') # 设置y轴标签\n",
    "plt.title('(a) 残差值与拟合值图', fontsize=15) # 设置子图标题\n",
    "\n",
    "ax2 = plt.subplot(122) # 创建第二个子图\n",
    "pplot = sm.ProbPlot(model2.resid, fit=True) # 创建概率图对象\n",
    "pplot.qqplot(line='r', ax=ax2, xlabel='期望正态值', ylabel='标准化的观测值') # 绘制Q-Q图\n",
    "ax2.set_title('(b) 正态Q-Q图', fontsize=15) # 设置子图标题\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从诊断图可以看出，新模型的残差分布与原模型相比，并没有明显的改善，模型仍有改进的空间，比如采用非线性模型。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.4 相对重要性和模型比较"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.4.1 自变量的相对重要性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>zy</th>\n",
       "      <th>zx1</th>\n",
       "      <th>zx2</th>\n",
       "      <th>zx3</th>\n",
       "      <th>zx4</th>\n",
       "      <th>zx5</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.109931</td>\n",
       "      <td>0.973605</td>\n",
       "      <td>1.116301</td>\n",
       "      <td>0.225563</td>\n",
       "      <td>-0.918419</td>\n",
       "      <td>-0.715777</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.329545</td>\n",
       "      <td>-1.359540</td>\n",
       "      <td>-1.239969</td>\n",
       "      <td>-1.394988</td>\n",
       "      <td>-0.057401</td>\n",
       "      <td>0.555704</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.628225</td>\n",
       "      <td>-0.201609</td>\n",
       "      <td>0.161536</td>\n",
       "      <td>-0.916793</td>\n",
       "      <td>-0.200904</td>\n",
       "      <td>0.850152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2.416660</td>\n",
       "      <td>0.794495</td>\n",
       "      <td>2.864553</td>\n",
       "      <td>0.584349</td>\n",
       "      <td>-0.631413</td>\n",
       "      <td>-0.247336</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.794159</td>\n",
       "      <td>-0.344583</td>\n",
       "      <td>-1.322220</td>\n",
       "      <td>0.031768</td>\n",
       "      <td>0.516610</td>\n",
       "      <td>0.756464</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         zy       zx1       zx2       zx3       zx4       zx5\n",
       "0  1.109931  0.973605  1.116301  0.225563 -0.918419 -0.715777\n",
       "1 -0.329545 -1.359540 -1.239969 -1.394988 -0.057401  0.555704\n",
       "2 -0.628225 -0.201609  0.161536 -0.916793 -0.200904  0.850152\n",
       "3  2.416660  0.794495  2.864553  0.584349 -0.631413 -0.247336\n",
       "4 -0.794159 -0.344583 -1.322220  0.031768  0.516610  0.756464"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df= example10_1.drop(['餐馆编号'], axis=1) # 删除餐馆编号列\n",
    "df = stats.zscore(df) # 计算标准化后的数据\n",
    "df.columns = ['zy', 'zx1', 'zx2', 'zx3', 'zx4', 'zx5'] # 重命名列名\n",
    "df.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>           <td>zy</td>        <th>  R-squared:         </th> <td>   0.852</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.813</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   21.84</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>2.84e-07</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:00</td>     <th>  Log-Likelihood:    </th> <td> -11.609</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   35.22</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    19</td>      <th>  BIC:               </th> <td>   42.53</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     5</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>-9.285e-17</td> <td>    0.088</td> <td>-1.05e-15</td> <td> 1.000</td> <td>   -0.185</td> <td>    0.185</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>zx1</th>       <td>    0.3362</td> <td>    0.253</td> <td>    1.327</td> <td> 0.200</td> <td>   -0.194</td> <td>    0.867</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>zx2</th>       <td>    0.4130</td> <td>    0.143</td> <td>    2.884</td> <td> 0.010</td> <td>    0.113</td> <td>    0.713</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>zx3</th>       <td>    0.1133</td> <td>    0.201</td> <td>    0.563</td> <td> 0.580</td> <td>   -0.308</td> <td>    0.534</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>zx4</th>       <td>   -0.0963</td> <td>    0.115</td> <td>   -0.836</td> <td> 0.414</td> <td>   -0.338</td> <td>    0.145</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>zx5</th>       <td>   -0.1781</td> <td>    0.096</td> <td>   -1.861</td> <td> 0.078</td> <td>   -0.378</td> <td>    0.022</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 2.669</td> <th>  Durbin-Watson:     </th> <td>   2.321</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.263</td> <th>  Jarque-Bera (JB):  </th> <td>   1.731</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.643</td> <th>  Prob(JB):          </th> <td>   0.421</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 3.071</td> <th>  Cond. No.          </th> <td>    6.35</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                     zy   R-squared:                       0.852\n",
       "Model:                            OLS   Adj. R-squared:                  0.813\n",
       "Method:                 Least Squares   F-statistic:                     21.84\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           2.84e-07\n",
       "Time:                        17:30:00   Log-Likelihood:                -11.609\n",
       "No. Observations:                  25   AIC:                             35.22\n",
       "Df Residuals:                      19   BIC:                             42.53\n",
       "Df Model:                           5                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept  -9.285e-17      0.088  -1.05e-15      1.000      -0.185       0.185\n",
       "zx1            0.3362      0.253      1.327      0.200      -0.194       0.867\n",
       "zx2            0.4130      0.143      2.884      0.010       0.113       0.713\n",
       "zx3            0.1133      0.201      0.563      0.580      -0.308       0.534\n",
       "zx4           -0.0963      0.115     -0.836      0.414      -0.338       0.145\n",
       "zx5           -0.1781      0.096     -1.861      0.078      -0.378       0.022\n",
       "==============================================================================\n",
       "Omnibus:                        2.669   Durbin-Watson:                   2.321\n",
       "Prob(Omnibus):                  0.263   Jarque-Bera (JB):                1.731\n",
       "Skew:                           0.643   Prob(JB):                        0.421\n",
       "Kurtosis:                       3.071   Cond. No.                         6.35\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "modelz = ols(\"zy~zx1+zx2+zx3+zx4+zx5\", data=df).fit() # 拟合回归模型\n",
    "modelz.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果显示，$\\bar \\beta_1$ = 0.3362, 表示在其他自变量不变的情况下，周边居民人数每变动1个标准差，日均营业额平均变动0.3362个标准差。其他系数的含义类似。\n",
    "\n",
    "标准化回归方程系数的绝对值大小可以反映自变量对因变量的相对重要性。$|\\bar \\beta_2| > |\\bar \\beta_1|> |\\bar \\beta_5| > |\\bar \\beta_3| > |\\bar \\beta_4|$，说明用餐平均支出是预测日均营业额最重要的变量，而周边餐馆数则是最不重要的变量。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.4.2 模型比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df_resid</th>\n",
       "      <th>ssr</th>\n",
       "      <th>df_diff</th>\n",
       "      <th>ss_diff</th>\n",
       "      <th>F</th>\n",
       "      <th>Pr(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>21.0</td>\n",
       "      <td>2267.196677</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>19.0</td>\n",
       "      <td>2153.026017</td>\n",
       "      <td>2.0</td>\n",
       "      <td>114.17066</td>\n",
       "      <td>0.503766</td>\n",
       "      <td>0.612098</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   df_resid          ssr  df_diff    ss_diff         F    Pr(>F)\n",
       "0      21.0  2267.196677      0.0        NaN       NaN       NaN\n",
       "1      19.0  2153.026017      2.0  114.17066  0.503766  0.612098"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用anova比较两个模型\n",
    "model1 = ols(\"y~x1+x2+x3+x4+x5\", data=example10_1).fit() # 拟合回归模型\n",
    "model2 = ols(\"y~x1+x2+x5\", data=example10_1).fit() # 拟合回归模型\n",
    "anova_lm(model2, model1, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用残差平方和作比较的结果表明，由于P>0.05，没有证据显示两个模型有显著差异，即两个模型的拟合优度没有显著差异。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>模型1</th>\n",
       "      <td>194.340771</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>模型2</th>\n",
       "      <td>191.632516</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            AIC\n",
       "模型1  194.340771\n",
       "模型2  191.632516"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用AIC比较两个模型\n",
    "pd.DataFrame({'AIC': [model1.aic, model2.aic]}, index=['模型1', '模型2']) # 显示AIC值"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用AIC的比较结果表明，由于model2的AIC值更小，意味着它比包含全部5个自变量的模型更好。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.5 利用回归方差进行预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Obs</th>\n",
       "      <th>Dep Var Population</th>\n",
       "      <th>Predicted Value</th>\n",
       "      <th>Mean ci 95% low</th>\n",
       "      <th>Mean ci 95% upp</th>\n",
       "      <th>Predict ci 95% low</th>\n",
       "      <th>Predict ci 95% upp</th>\n",
       "      <th>Residual</th>\n",
       "      <th>Cook's D</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>53.2</td>\n",
       "      <td>52.19</td>\n",
       "      <td>45.46</td>\n",
       "      <td>58.92</td>\n",
       "      <td>29.56</td>\n",
       "      <td>74.82</td>\n",
       "      <td>1.01</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>18.5</td>\n",
       "      <td>-4.50</td>\n",
       "      <td>-11.97</td>\n",
       "      <td>2.97</td>\n",
       "      <td>-27.36</td>\n",
       "      <td>18.36</td>\n",
       "      <td>23.00</td>\n",
       "      <td>0.19</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>11.3</td>\n",
       "      <td>21.96</td>\n",
       "      <td>15.69</td>\n",
       "      <td>28.24</td>\n",
       "      <td>-0.54</td>\n",
       "      <td>44.46</td>\n",
       "      <td>-10.66</td>\n",
       "      <td>0.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>84.7</td>\n",
       "      <td>65.11</td>\n",
       "      <td>49.30</td>\n",
       "      <td>80.93</td>\n",
       "      <td>38.34</td>\n",
       "      <td>91.89</td>\n",
       "      <td>19.59</td>\n",
       "      <td>2.21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>7.3</td>\n",
       "      <td>6.13</td>\n",
       "      <td>-2.28</td>\n",
       "      <td>14.54</td>\n",
       "      <td>-17.06</td>\n",
       "      <td>29.32</td>\n",
       "      <td>1.17</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6.0</td>\n",
       "      <td>17.9</td>\n",
       "      <td>22.41</td>\n",
       "      <td>14.58</td>\n",
       "      <td>30.24</td>\n",
       "      <td>-0.57</td>\n",
       "      <td>45.39</td>\n",
       "      <td>-4.51</td>\n",
       "      <td>0.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7.0</td>\n",
       "      <td>2.5</td>\n",
       "      <td>1.28</td>\n",
       "      <td>-6.11</td>\n",
       "      <td>8.67</td>\n",
       "      <td>-21.56</td>\n",
       "      <td>24.12</td>\n",
       "      <td>1.22</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8.0</td>\n",
       "      <td>27.3</td>\n",
       "      <td>34.72</td>\n",
       "      <td>28.40</td>\n",
       "      <td>41.04</td>\n",
       "      <td>12.21</td>\n",
       "      <td>57.23</td>\n",
       "      <td>-7.42</td>\n",
       "      <td>0.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9.0</td>\n",
       "      <td>5.9</td>\n",
       "      <td>10.63</td>\n",
       "      <td>4.90</td>\n",
       "      <td>16.35</td>\n",
       "      <td>-11.73</td>\n",
       "      <td>32.98</td>\n",
       "      <td>-4.73</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10.0</td>\n",
       "      <td>23.9</td>\n",
       "      <td>37.84</td>\n",
       "      <td>32.19</td>\n",
       "      <td>43.49</td>\n",
       "      <td>15.51</td>\n",
       "      <td>60.18</td>\n",
       "      <td>-13.94</td>\n",
       "      <td>0.04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11.0</td>\n",
       "      <td>69.4</td>\n",
       "      <td>62.85</td>\n",
       "      <td>52.94</td>\n",
       "      <td>72.77</td>\n",
       "      <td>39.08</td>\n",
       "      <td>86.63</td>\n",
       "      <td>6.55</td>\n",
       "      <td>0.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12.0</td>\n",
       "      <td>20.6</td>\n",
       "      <td>18.30</td>\n",
       "      <td>13.04</td>\n",
       "      <td>23.56</td>\n",
       "      <td>-3.94</td>\n",
       "      <td>40.54</td>\n",
       "      <td>2.30</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13.0</td>\n",
       "      <td>1.9</td>\n",
       "      <td>-5.51</td>\n",
       "      <td>-13.69</td>\n",
       "      <td>2.67</td>\n",
       "      <td>-28.62</td>\n",
       "      <td>17.60</td>\n",
       "      <td>7.41</td>\n",
       "      <td>0.02</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>14.96</td>\n",
       "      <td>8.69</td>\n",
       "      <td>21.22</td>\n",
       "      <td>-7.54</td>\n",
       "      <td>37.45</td>\n",
       "      <td>-11.96</td>\n",
       "      <td>0.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15.0</td>\n",
       "      <td>7.3</td>\n",
       "      <td>8.86</td>\n",
       "      <td>-1.05</td>\n",
       "      <td>18.77</td>\n",
       "      <td>-14.91</td>\n",
       "      <td>32.63</td>\n",
       "      <td>-1.56</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16.0</td>\n",
       "      <td>46.2</td>\n",
       "      <td>29.83</td>\n",
       "      <td>21.74</td>\n",
       "      <td>37.92</td>\n",
       "      <td>6.76</td>\n",
       "      <td>52.90</td>\n",
       "      <td>16.37</td>\n",
       "      <td>0.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17.0</td>\n",
       "      <td>78.8</td>\n",
       "      <td>78.02</td>\n",
       "      <td>62.11</td>\n",
       "      <td>93.93</td>\n",
       "      <td>51.18</td>\n",
       "      <td>104.85</td>\n",
       "      <td>0.78</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18.0</td>\n",
       "      <td>11.1</td>\n",
       "      <td>13.17</td>\n",
       "      <td>6.42</td>\n",
       "      <td>19.92</td>\n",
       "      <td>-9.47</td>\n",
       "      <td>35.80</td>\n",
       "      <td>-2.07</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19.0</td>\n",
       "      <td>8.6</td>\n",
       "      <td>15.85</td>\n",
       "      <td>4.67</td>\n",
       "      <td>27.02</td>\n",
       "      <td>-8.48</td>\n",
       "      <td>40.17</td>\n",
       "      <td>-7.25</td>\n",
       "      <td>0.06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20.0</td>\n",
       "      <td>48.9</td>\n",
       "      <td>50.73</td>\n",
       "      <td>44.20</td>\n",
       "      <td>57.25</td>\n",
       "      <td>28.16</td>\n",
       "      <td>73.30</td>\n",
       "      <td>-1.83</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21.0</td>\n",
       "      <td>22.1</td>\n",
       "      <td>27.46</td>\n",
       "      <td>21.67</td>\n",
       "      <td>33.25</td>\n",
       "      <td>5.09</td>\n",
       "      <td>49.83</td>\n",
       "      <td>-5.36</td>\n",
       "      <td>0.01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22.0</td>\n",
       "      <td>11.1</td>\n",
       "      <td>0.23</td>\n",
       "      <td>-13.49</td>\n",
       "      <td>13.95</td>\n",
       "      <td>-25.36</td>\n",
       "      <td>25.83</td>\n",
       "      <td>10.87</td>\n",
       "      <td>0.31</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23.0</td>\n",
       "      <td>8.6</td>\n",
       "      <td>22.63</td>\n",
       "      <td>17.18</td>\n",
       "      <td>28.07</td>\n",
       "      <td>0.34</td>\n",
       "      <td>44.91</td>\n",
       "      <td>-14.03</td>\n",
       "      <td>0.03</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24.0</td>\n",
       "      <td>48.9</td>\n",
       "      <td>48.96</td>\n",
       "      <td>42.72</td>\n",
       "      <td>55.20</td>\n",
       "      <td>26.47</td>\n",
       "      <td>71.45</td>\n",
       "      <td>-0.06</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25.0</td>\n",
       "      <td>22.1</td>\n",
       "      <td>27.01</td>\n",
       "      <td>21.22</td>\n",
       "      <td>32.79</td>\n",
       "      <td>4.64</td>\n",
       "      <td>49.37</td>\n",
       "      <td>-4.91</td>\n",
       "      <td>0.00</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    Obs   Dep Var Population  Predicted Value  Mean ci 95% low   \n",
       "0    1.0                53.2            52.19            45.46  \\\n",
       "1    2.0                18.5            -4.50           -11.97   \n",
       "2    3.0                11.3            21.96            15.69   \n",
       "3    4.0                84.7            65.11            49.30   \n",
       "4    5.0                 7.3             6.13            -2.28   \n",
       "5    6.0                17.9            22.41            14.58   \n",
       "6    7.0                 2.5             1.28            -6.11   \n",
       "7    8.0                27.3            34.72            28.40   \n",
       "8    9.0                 5.9            10.63             4.90   \n",
       "9   10.0                23.9            37.84            32.19   \n",
       "10  11.0                69.4            62.85            52.94   \n",
       "11  12.0                20.6            18.30            13.04   \n",
       "12  13.0                 1.9            -5.51           -13.69   \n",
       "13  14.0                 3.0            14.96             8.69   \n",
       "14  15.0                 7.3             8.86            -1.05   \n",
       "15  16.0                46.2            29.83            21.74   \n",
       "16  17.0                78.8            78.02            62.11   \n",
       "17  18.0                11.1            13.17             6.42   \n",
       "18  19.0                 8.6            15.85             4.67   \n",
       "19  20.0                48.9            50.73            44.20   \n",
       "20  21.0                22.1            27.46            21.67   \n",
       "21  22.0                11.1             0.23           -13.49   \n",
       "22  23.0                 8.6            22.63            17.18   \n",
       "23  24.0                48.9            48.96            42.72   \n",
       "24  25.0                22.1            27.01            21.22   \n",
       "\n",
       "    Mean ci 95% upp  Predict ci 95% low  Predict ci 95% upp  Residual    \n",
       "0             58.92               29.56               74.82       1.01  \\\n",
       "1              2.97              -27.36               18.36      23.00   \n",
       "2             28.24               -0.54               44.46     -10.66   \n",
       "3             80.93               38.34               91.89      19.59   \n",
       "4             14.54              -17.06               29.32       1.17   \n",
       "5             30.24               -0.57               45.39      -4.51   \n",
       "6              8.67              -21.56               24.12       1.22   \n",
       "7             41.04               12.21               57.23      -7.42   \n",
       "8             16.35              -11.73               32.98      -4.73   \n",
       "9             43.49               15.51               60.18     -13.94   \n",
       "10            72.77               39.08               86.63       6.55   \n",
       "11            23.56               -3.94               40.54       2.30   \n",
       "12             2.67              -28.62               17.60       7.41   \n",
       "13            21.22               -7.54               37.45     -11.96   \n",
       "14            18.77              -14.91               32.63      -1.56   \n",
       "15            37.92                6.76               52.90      16.37   \n",
       "16            93.93               51.18              104.85       0.78   \n",
       "17            19.92               -9.47               35.80      -2.07   \n",
       "18            27.02               -8.48               40.17      -7.25   \n",
       "19            57.25               28.16               73.30      -1.83   \n",
       "20            33.25                5.09               49.83      -5.36   \n",
       "21            13.95              -25.36               25.83      10.87   \n",
       "22            28.07                0.34               44.91     -14.03   \n",
       "23            55.20               26.47               71.45      -0.06   \n",
       "24            32.79                4.64               49.37      -4.91   \n",
       "\n",
       "    Cook's D  \n",
       "0       0.00  \n",
       "1       0.19  \n",
       "2       0.03  \n",
       "3       2.21  \n",
       "4       0.00  \n",
       "5       0.01  \n",
       "6       0.00  \n",
       "7       0.01  \n",
       "8       0.00  \n",
       "9       0.04  \n",
       "10      0.03  \n",
       "11      0.00  \n",
       "12      0.02  \n",
       "13      0.03  \n",
       "14      0.00  \n",
       "15      0.12  \n",
       "16      0.00  \n",
       "17      0.00  \n",
       "18      0.06  \n",
       "19      0.00  \n",
       "20      0.01  \n",
       "21      0.31  \n",
       "22      0.03  \n",
       "23      0.00  \n",
       "24      0.00  "
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = ols(\"y~x1+x2+x5\", data=example10_1).fit() # 拟合回归模型\n",
    "\n",
    "conf_level = 0.95 # 置信水平\n",
    "st, _, _ = summary_table(model, alpha=1-conf_level) # 计算点预测值、置信区间和预测区间\n",
    "columns = [x + ' ' + y for (x, y) in zip(st.data[0], st.data[1])] # 构建列名\n",
    "# 双重索引列名\n",
    "df_res = pd.DataFrame(st.data[2:], columns=columns) # 创建数据框\n",
    "df_res.drop(\n",
    "    columns=['Std Error Mean Predict', 'Std Error Residual', 'Student Residual'], inplace=True\n",
    ") # 删除不需要的列\n",
    "round(df_res, 2) # 显示结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    17.886847\n",
       "dtype: float64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 求x1=50, x2=100, x5=10时y的点预测值\n",
    "model.predict(exog=dict(x1=50, x2=100, x5=10))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 10.6 哑变量回归"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.6.1 在模型中引入哑变量"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.6.2 含有一个哑变量的回归"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>餐馆编号</th>\n",
       "      <th>日均营业额</th>\n",
       "      <th>用餐平均支出</th>\n",
       "      <th>交通方便程度</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>53.2</td>\n",
       "      <td>168.6</td>\n",
       "      <td>方便</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>18.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>方便</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>11.3</td>\n",
       "      <td>109.4</td>\n",
       "      <td>不方便</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>84.7</td>\n",
       "      <td>277.0</td>\n",
       "      <td>方便</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>7.3</td>\n",
       "      <td>17.4</td>\n",
       "      <td>不方便</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   餐馆编号  日均营业额  用餐平均支出 交通方便程度\n",
       "0     1   53.2   168.6     方便\n",
       "1     2   18.5    22.5     方便\n",
       "2     3   11.3   109.4    不方便\n",
       "3     4   84.7   277.0     方便\n",
       "4     5    7.3    17.4    不方便"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "example10_7 = pd.read_csv('./pydata/chap10/example10_7.csv', encoding='gbk') # 读取数据\n",
    "example10_7.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>          <td>日均营业额</td>      <th>  R-squared:         </th> <td>   0.694</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.681</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   52.23</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>2.34e-07</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:01</td>     <th>  Log-Likelihood:    </th> <td> -100.22</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   204.4</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    23</td>      <th>  BIC:               </th> <td>   206.9</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   -5.7502</td> <td>    5.251</td> <td>   -1.095</td> <td> 0.285</td> <td>  -16.612</td> <td>    5.112</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>用餐平均支出</th>    <td>    0.3239</td> <td>    0.045</td> <td>    7.227</td> <td> 0.000</td> <td>    0.231</td> <td>    0.417</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 2.129</td> <th>  Durbin-Watson:     </th> <td>   2.013</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.345</td> <th>  Jarque-Bera (JB):  </th> <td>   1.580</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.609</td> <th>  Prob(JB):          </th> <td>   0.454</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.815</td> <th>  Cond. No.          </th> <td>    221.</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                  日均营业额   R-squared:                       0.694\n",
       "Model:                            OLS   Adj. R-squared:                  0.681\n",
       "Method:                 Least Squares   F-statistic:                     52.23\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           2.34e-07\n",
       "Time:                        17:30:01   Log-Likelihood:                -100.22\n",
       "No. Observations:                  25   AIC:                             204.4\n",
       "Df Residuals:                      23   BIC:                             206.9\n",
       "Df Model:                           1                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept     -5.7502      5.251     -1.095      0.285     -16.612       5.112\n",
       "用餐平均支出         0.3239      0.045      7.227      0.000       0.231       0.417\n",
       "==============================================================================\n",
       "Omnibus:                        2.129   Durbin-Watson:                   2.013\n",
       "Prob(Omnibus):                  0.345   Jarque-Bera (JB):                1.580\n",
       "Skew:                           0.609   Prob(JB):                        0.454\n",
       "Kurtosis:                       2.815   Cond. No.                         221.\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "models = ols(\"日均营业额~用餐平均支出\", data=example10_7).fit() # 拟合回归模型\n",
    "models.summary() # 显示回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df</th>\n",
       "      <th>sum_sq</th>\n",
       "      <th>mean_sq</th>\n",
       "      <th>F</th>\n",
       "      <th>PR(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>用餐平均支出</th>\n",
       "      <td>1.0</td>\n",
       "      <td>10085.879366</td>\n",
       "      <td>10085.879366</td>\n",
       "      <td>52.227825</td>\n",
       "      <td>2.342873e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Residual</th>\n",
       "      <td>23.0</td>\n",
       "      <td>4441.602234</td>\n",
       "      <td>193.113141</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            df        sum_sq       mean_sq          F        PR(>F)\n",
       "用餐平均支出     1.0  10085.879366  10085.879366  52.227825  2.342873e-07\n",
       "Residual  23.0   4441.602234    193.113141        NaN           NaN"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anova_lm(models, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "回归结果表明：\n",
    "- $R^2$ = 0.694, 表示用餐平均支出解释了日均营业额误差的69.4%；\n",
    "- F检验P<0.05，表示模型显著；\n",
    "- 回归系数$\\hat \\beta_1$ = 0.3239，表示用餐平均支出每变动1元，日均营业额平均变动0.3239万元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>          <td>日均营业额</td>      <th>  R-squared:         </th> <td>   0.776</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.755</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   38.02</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>7.27e-08</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:01</td>     <th>  Log-Likelihood:    </th> <td> -96.356</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   198.7</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    22</td>      <th>  BIC:               </th> <td>   202.4</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     2</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>          <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>    <td>   -8.4541</td> <td>    4.698</td> <td>   -1.799</td> <td> 0.086</td> <td>  -18.198</td> <td>    1.289</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>交通方便程度[T.方便]</th> <td>   14.6209</td> <td>    5.178</td> <td>    2.824</td> <td> 0.010</td> <td>    3.882</td> <td>   25.359</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>用餐平均支出</th>       <td>    0.2864</td> <td>    0.041</td> <td>    6.909</td> <td> 0.000</td> <td>    0.200</td> <td>    0.372</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 1.594</td> <th>  Durbin-Watson:     </th> <td>   2.420</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.451</td> <th>  Jarque-Bera (JB):  </th> <td>   1.153</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.273</td> <th>  Prob(JB):          </th> <td>   0.562</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.100</td> <th>  Cond. No.          </th> <td>    263.</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                  日均营业额   R-squared:                       0.776\n",
       "Model:                            OLS   Adj. R-squared:                  0.755\n",
       "Method:                 Least Squares   F-statistic:                     38.02\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           7.27e-08\n",
       "Time:                        17:30:01   Log-Likelihood:                -96.356\n",
       "No. Observations:                  25   AIC:                             198.7\n",
       "Df Residuals:                      22   BIC:                             202.4\n",
       "Df Model:                           2                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "================================================================================\n",
       "                   coef    std err          t      P>|t|      [0.025      0.975]\n",
       "--------------------------------------------------------------------------------\n",
       "Intercept       -8.4541      4.698     -1.799      0.086     -18.198       1.289\n",
       "交通方便程度[T.方便]    14.6209      5.178      2.824      0.010       3.882      25.359\n",
       "用餐平均支出           0.2864      0.041      6.909      0.000       0.200       0.372\n",
       "==============================================================================\n",
       "Omnibus:                        1.594   Durbin-Watson:                   2.420\n",
       "Prob(Omnibus):                  0.451   Jarque-Bera (JB):                1.153\n",
       "Skew:                           0.273   Prob(JB):                        0.562\n",
       "Kurtosis:                       2.100   Cond. No.                         263.\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 引入交通方便程度类别变量\n",
    "modeld = ols(\"日均营业额~用餐平均支出+交通方便程度\", data=example10_7).fit() # 拟合回归模型\n",
    "modeld.summary() # 显示回归结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df</th>\n",
       "      <th>sum_sq</th>\n",
       "      <th>mean_sq</th>\n",
       "      <th>F</th>\n",
       "      <th>PR(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>交通方便程度</th>\n",
       "      <td>1.0</td>\n",
       "      <td>4193.122184</td>\n",
       "      <td>4193.122184</td>\n",
       "      <td>28.296158</td>\n",
       "      <td>2.439564e-05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>用餐平均支出</th>\n",
       "      <td>1.0</td>\n",
       "      <td>7074.245908</td>\n",
       "      <td>7074.245908</td>\n",
       "      <td>47.738648</td>\n",
       "      <td>6.145195e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Residual</th>\n",
       "      <td>22.0</td>\n",
       "      <td>3260.113508</td>\n",
       "      <td>148.186978</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            df       sum_sq      mean_sq          F        PR(>F)\n",
       "交通方便程度     1.0  4193.122184  4193.122184  28.296158  2.439564e-05\n",
       "用餐平均支出     1.0  7074.245908  7074.245908  47.738648  6.145195e-07\n",
       "Residual  22.0  3260.113508   148.186978        NaN           NaN"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anova_lm(modeld, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的回归方程为：\n",
    "- $\\hat{y} = -8.4541 + 0.3239 \\times 用餐平均支出 + 14.6209 \\times 交通方便程度$\n",
    "\n",
    "回归结果表明：\n",
    "- F检验P<0.05，表示模型显著；\n",
    "- 回归系数$\\hat \\beta_1$ = 0.3239，表示用餐平均支出每变动1元，日均营业额平均变动0.3239万元；\n",
    "- 回归系数$\\hat \\beta_2$ = 14.6209，表示交通方便程度为“方便”时，日均营业额平均比交通“不方便”的地段高14.6209万元。\n",
    "- 回归系数的t检验P均小于0.05，说明两个回归系数都显著。\n",
    "- 调整的决定系数$R^2_a$=0.755，表示用餐平均支出和交通方便程度共同解释了日均营业额误差的75.5%，比原模型拟合优度更高。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAvcAAAIkCAYAAACa1QQ6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADECElEQVR4nOzdd3xT1fvA8U+adC8KLbtQoIwiCIgyZcqeDviKCwRFZMhG9t7IUERAQFkiKqAge2/ZS0YLxVJWobTQvdIk5/dHfo2UttBiIaV93q9XXnBHbp6bpulzz33OORqllEIIIYQQQgjxwrOxdgBCCCGEEEKI7CHJvRBCCCGEELmEJPdCCCGEEELkEpLcCyGEEEIIkUtIci+EEEIIIUQuIcm9EEIIIYQQuYQk90IIIYQQQuQSktwLIYQQQgiRS0hyL4QQQgghRC4hyb0QQgghhBC5hCT3QgjxnM2fP598+fLRrVs3EhMTLet/++037t69+9ziiI2N5erVq6liyKtMJhMGg8HaYQghxH8myb3I9ZKSkti3bx/Xr19Pd/uFCxcIDQ0FIDExkQsXLhAVFZWtMRw5coRPP/2UO3fuZOtxn7fHJUAJCQn/+fzeeOMNevfunWpdVFQUPj4+jBo16qmOefToUX766ScCAwMBuHv3Lj/99BO7d+/O8rGUUv85+b5+/TrDhw+nU6dO7N69m7fffpukpCSMRiPTpk1j3759/+n4WbF3717Kli3LhQsXAEhOTiY+Ph6TyURMTEyWkt1jx45x/Phxzpw5w9mzZ5/4OH36tOU5j2MwGDCZTOluu3HjRrYl5B9++CG2trb8/fff2XI8gEGDBjF06NBsO15WXL16lalTp3Ly5Mn/fKzo6GgSEhJQSmVDZP9SSrFlyxYmT5781Mf4+eef+fHHH4mMjCQ8PJyYmBgSEhJITExM9xEbG8uDBw8y9Xus1+ufOq7MGDVqFPXq1XumryHyKCVELnfr1i0FqBkzZqS73c7OTk2cOFEppdSVK1cUoH777bc0+0VHR6tJkyapmTNnqrlz56pvv/021WPu3Llq5syZ6tixY8pkMqmYmBil1+uVUkqtXr1aAerq1avP7kTT8fHHHysg048DBw489nh9+/ZVgAoNDU2zbePGjQpQbdq0eWJcBoNB3b9/X8XGxqrk5GTL+uLFi6t27dql2jcxMVEBauDAgZZ1SUlJKioqSkVGRj7xtb744gsFqOXLlyullDpy5IgCVNu2bZ/43EdVqlRJubq6KoPBkGq9v7+/2rVrlzp06JA6cuSI5fHXX3+pPXv2qGPHjln27d+/vxo/frxSSqn79++rKlWqqKpVq6omTZqoChUqpHo/lFLqwIEDWfoZPvz4448/Hns+u3fvTvOcd955R127di3DY7Zo0SLdY5UsWfKpYixfvnyG8T148EABqmfPnulur169unJzc1N79+597HlmRvfu3RWgrly58p+PlaJixYrq5ZdfzrbjZcWsWbMUoD755JMsPW/jxo2qbdu2Ki4uzrIusz/bevXqqYiIiCy9nq+v739631999VUFqIMHDypnZ+csffYe/V1TSqkbN26odevWqZ49e6oCBQqoP//8Uyml1PXr15W/v3+Gj6eJv0ePHtn+mRNCKaV0Wb0YEOJF4+DgAIC9vT1gbi06d+4cjo6OaLVa7OzsLOUJKa05kZGRBAYGkpCQQNGiRfH09CQ2NpZ58+bh4OBAaGgoWq2WYsWKAeYWRFtbW/Lnz4+bmxve3t4ULVqUxYsX8+mnn1peO+Xf50WnM/+KL168+LH7/fXXXyxduhStVvvY/ZycnABwdHRMs23v3r0AvP/++0+MKzAwED8/v3S33bp1C41Gk2b97NmzmT17dqp1DRo0eGJLd758+R777+Pcu3ePBw8eWJZTWrn//PNPS/yurq4sWbKEWbNmYWNjvhlqMpnQarUopTCZTKnibNCgAVWrVgUgf/787Nixg/bt23Pjxg3Wrl1r+ZmlsLOzA2DKlCm89dZbqbb5+fnx5ptvMnXq1FTr//jjD0aMGPHEz1tKvOfOnaNEiRLo9Xo0Gg0eHh5cv34dJycnSzxXr17ltddeo0ePHuke6+eff8bGxgZbW9tUn6OQkBBat25Njx49+Pzzzy3r9Xo9iYmJac73YY/7vEVGRnL27FnKlSuXqdbP5ORkkpKScHBwSPc1U9alt00pRXJyMomJibi5uaXZPmjQIC5fvsymTZtSrc+fPz8JCQlp9l+2bBmbNm3im2++sXyHPI2EhIR03xuAt99+m927d/Paa6+lu10pRUJCguU9TnH37l02btzIp59+ys8//wzAgQMHsLW1RafTERQURGxsLFWqVAFg4cKFjB49mvbt2/PLL79Yvm8zq2PHjkydOpW1a9cyfPjwLD33+vXrnDx5klatWvH6668zduxYXFxccHBwwNbWFoBu3brRpk0b3n77bcD8u2k0GomPj0/1Oe3SpQt//PEHMTExALi7u1O9enXOnDlD27Zt6dq1K3v27MkwlgIFChAeHp5m/Z07dzh16lS6z0n5/fzxxx+pW7euJb7Y2FhiY2OJi4ujV69ez/3vhsgFrHttIcSzFxMTowD17bffKqWUSkhIyFLrztKlS9Mcs06dOuqtt96yLDdo0EB16dLFshwZGakA9dNPPyml/m3VvnPnzjM910eltAw9ydKlSxWQqoU5PSNHjlSASkhISLOtdOnSqkiRImlatdOTlJSkrly5ooKDg1VISIgKCwtTYWFhqmjRoqpt27aW5bCwMHX37l0FqN69e1vWhYaGqtu3b6tbt2498bUmT56sALV9+3allFJBQUEKUL169XricwcPHvzEz8f//vc/lZCQYLlLs2zZMgWooKAgpZT5zkNMTMwTXysjp06dyvBzCKT63KVI+Xnu3Lkz3WNOnDhR7d+/X+3du1cB6tq1a2n2MZlMlvdMKfMdkFKlSqXb2vk4KXcBxo4dm6XnKaVUcnKyAtTQoUPTbFu+fLkC1HfffZepY/3xxx9PfQfk4Ud659+6dWtVuHDhNOsbNGigqlevnmZ9yu9RWFhYpmLPSN26dZVOp1P58+dXBQoUyPTD3d1daTQaVbdu3XSP+8knn6S62/WwZs2aKUdHR/Xrr7+qb775Rmk0GtWnT58Mf+/v37+voqKiVEJCgkpOTk7zOHr0qBo0aJA6efJkutuTkpJUTExMqjsJj76Pe/bsyfA9sre3z9Rnb//+/WrevHlqz549qkKFCuqDDz5Itb1169aqZs2a6T73nXfeUcWKFUt327p16xSg3N3dM/3zyZcvn3JxcVFarTbLd0KEUEpa7kUe5ODgQHR0NE5OTmi1WvLly8eoUaMYPHgwt27dwtvbm61bt9K8eXPi4+MtLUAPS2kBzEhKi9CTWsKftce1iqbnaeM9deoUQUFB2NraUqhQoXT3mThxIj179gTMrdFly5ZNs0/9+vWpUqUKnp6elnUmk4nWrVvz0ksvpVqfkeDgYHx8fCzLKS3fKf+m3BV4+O5AcnIyO3fupEmTJpb9wPxZsbe3JzExkYMHD5KQkEDTpk0tz61QoQI6nS7VZ+Hy5csULlyYUqVKAebWuf/S8pbSuv400vt5/vXXX4wdO9ZyDlqtFl9fX0wmE/b29uzfv58aNWqwbds22rRpQ4sWLRgwYAALFy5k+fLlj/1MHT58mDVr1vD1118/MbYePXpgZ2fHmDFj8PLyyvK5rVmzBoARI0YwZsyYNNtdXV25du2aZfmVV15h5cqVODk5YWtrm+bu0MKFC9m8eTM//PADBQsWTLXNZDKRnJxMXFxcuu9pyucks1Lewyc9x8fHh48//phx48alu/3DDz/kjTfeyLD1PiMGg4HIyMgMf1e//vprvL296dixY5pt69evp2PHjnTq1AmdTseCBQsyvJsD8PLLL3P79u0nxjRr1qzHbh87dmyq9yE2Npb58+dTunRpGjVqBJg/C4/exQIYP34848ePtyznz5+f+/fvp9qnfv361K9fH0j/5/Kk78aMtqf8/dizZw+vvPIKAAEBAfzyyy989NFHlClTxrLvunXr2Lt3L19//XWWv7uFeJh8ekSu1bt3b7Zu3Wr5Iz5+/HhmzpxJ3bp1+emnnywdbE0mExEREQQHB1vKckJDQ7l+/Tr58+fH2dk5zbGTkpLSTfpzmqwm6+ntbzQaWbBgAU5OTpbOhitWrCA5OZmKFSvSqFEjZs6ciU6nY8KECWn+KN25c4fZs2enOfY333yTpgNuyZIliYyMZNiwYanWV6pUievXr6dZ36xZMxo3bmxZ7tixI5s2bSIkJAQPD49Mn/fZs2dp3bo1lStXTtWh0mAw4OLiQnR0NB988AFeXl5UqFCBEiVKADBp0iTy5ctHdHS0pXzn+PHjVK5cmeDgYMD8x/2/lF78l+T+0QT22LFjvPnmm3Ts2JEJEyawb98+OnfuzG+//Ubfvn1ZsmQJL730EgAtW7bkypUrfPLJJzRt2pTSpUtbShsysnPnTr755htatGhBixYtMtzvwYMHLF++nAIFCjBlypQ02w8fPszFixctn5nz58+zePFiYmNj6dWrF0FBQWzZsoWmTZvSrFmzNM9fvnx5muStRIkSfPjhhxnGtG3bNgAaN26c6uLwWUqv/CwrHi5zAoiJibEkwY+WD23atIk6deqQP3/+Jx7XxcWFsWPHWpadnJzSLS9KTk7m888/TxXH119/Tb9+/SzL8+fPB8wXNA9/lr///nvWr1/PrFmzqFixYoaxGI1GkpOT8fX1TbV+/vz5REREULp0acu6lIvsh8sQe/bsScuWLWnXrh1Aqs71D0tp8Hn4+ysxMZGEhAQ8PDxITEwkNDSUefPmpXnuP//8k2Hn25TjaTQaoqOjsbe3Jzg4mPHjx9O0adNUyf2pU6dYsGABc+fORa/XExcXl6XvMSFSSHIvcq0333yTV155hVu3bjFu3DhatmzJ66+/TtGiRTEajZaWVTDXMz+cZHz88ceAOQHt27cvYG6BSkxMxM7OjqtXr3L79m1L7fTVq1f5+++/8fPzw8XFxVJ/bm1ZTR7S2z85OZkvvvgi1bqUlrp+/fpRtGhRfvvtNz755JM0yTeYRwqaPXs2Li4uqdavWrWKgIAAatSokaUYwfxH9/Dhw3h6eqZK7uvUqcPatWtZvXo1vXr1yvTxjh07Bpjrbh82depUpkyZwttvv83Nmze5efMmJUuWtGwfPXo0EyZMYNasWQwePJiJEyfSsGFDwJxErF+/nvj4eC5dupTlc0yR8jPp2rUrXbt2TbN9+fLlLF++PFPH0mq1dOnShenTp7N7924mTJjAl19+ibOzM+vXr7f8HH/88UeqVavG/PnzOXr0KB07duTYsWP4+fkxZcoU3n333XQ/K4MHD2bBggWMHj36scn93LlzSUpKYtasWbi6uqbZvnHjRqZPn25Z3rJlC1u2bLG8D5MnT0ar1bJo0aJ0E/GdO3eSlJSUqfckt0hOTuZ///sf27Zt48GDByxbtsyybevWrbRr146SJUuydu1aqlevnqVj29ra0q1bN/r06WNZl/JZeLgfiJ+fX5o7milJ9aM2bNgAQKNGjahWrVqW4gkJCUl3hJ2URPrTTz+1rOvTpw+vvPKKZd3JkydT3dFJUadOHS5evGhZPnfuHKtWrbLU0nt7exMaGsqSJUvSjenRi49HaTQaGjdunKr+/vXXX09334fv/MrwrOJpSHIvcq2mTZsCWEoEatSoQffu3VOVI3z99dep/mA9rHDhwqn+UHXt2hWlFImJiYwcOZJWrVpZWg1nz55NgQIFePfdd9FqtZZWnOTk5Gd1epmScq5PGsc8Jc70WokdHByIiIjA1dWVsWPHMnnyZOLj4y2dDJs2bYqDgwOjR4/mr7/+onDhwqla02JjYwHSJPf29vaUK1eOXbt2Zfm8goODKVWqVKoSGoAPPviAL7/8kpUrV2Ypud+9ezd2dnaWi7oURqORzz77jJ07d7J582bKlSsHmFsDz507x6BBg4B/O3yOGjUKg8FgSTKCg4M5ffp0ls/vYSk/w6fpUPuoV199FVtbWxYsWMCGDRuIiIige/fu9OnThzFjxhAeHs7vv/9O79696d27N9euXWPr1q00atSIuLg4Bg0axLhx42jSpEm6JVIuLi5069bNMqRnyoXOw65fv86MGTOoUaMGnTp1Svecx4wZw7hx4ywd3ocOHcqkSZOIi4tj9+7drFq1ij59+lC4cGHWrVvHO++8k+r5sbGxaT5vKa5du8bx48ext7dP1Uqbcqdlz549acpymjRp8tgyPL1eT2xsbKqEGsydU5OSktKsP3v2LGD+fGWHpKQk3nvvPbZt20br1q0treUpWrRoweTJkxkzZgx169Zl3rx5qRLgFAMHDuTnn3/G1taWSpUqsXXrVsCcNHt6elKhQoVU+xcpUiTNusze0YyPjwdI987o45hMJrp27UpSUhKvvvpqquE50yu5g7RlOQ9foKeYPn06er2eyMhIunXrRoMGDVL9bcgoqc9MvGD+e7Ns2TJMJhOnT5+ma9eu/PLLL5aOyQDz5s1j0aJFnD17FqPRmO7dEiEyQ5J7keutWrUKMLcGrl27lj179mBjY4NWq+WLL75I0yr9sIeT3QEDBgDwww8/AOYRMlJGOPj5558pXbo0/fv3B8wtS/DkpPpZS/kjl9ma3Ixa+h8dWUaj0eDo6Mh3333HiRMnmDp1KgUKFKBatWqUK1eOQ4cOWd67lNEnHk22Hv7D9csvv/Dee+89MT4PD49Uo9c8+sevYMGCNG3alK1bt6apvc+IwWBgz549tG/fngIFCqTa9uGHH7JmzRoWLVpEnz59aNiwITVq1GDXrl38+uuvuLu7A6S6yBgxYgTz58+3JIuPXoBkVUpykF4iBeZRPdJLujJy5coVZsyYQdeuXVm2bBk7duzg9ddf54MPPmD58uUEBATw+++/88knnwBw//59kpOTcXZ2ZuHChSQmJj420e3atSsJCQmWC6FHnT9/Hjc3t3Rro1OkjODycKulTqfD3t6e/v37U6hQISZOnMjcuXMZOnQoW7ZsoWXLlpZ9Y2JiMhwN6fDhw3z00UcZvnbKeacoWbJkui29D0tISOD+/fvp3lkBMlyfkJBg+QyBOcGMiIiwLEdERLBr165U3yNNmjShSZMmluXbt2/z7rvvcvjwYTp37swPP/yQpjROo9EwfPhwateuzf/+9z+6d+/O0aNHWbRoUarvuJYtW+Lr68uKFStS/Z7Z2tqmSZBTzuvRc8tsGVnKd2RISEiG8xi4u7un+Sxv27aNHTt2MGTIEIKCgiy/ZynnCU8uy0lvzpPWrVsD5nIhgOLFi9OhQwfAfBEWFxeXYf+ZlJGU7O3t0/y+p5ybTqezjLB17949wPzZevh319PTE6XUY8uUhMgMSe5FrnbmzBnLJC5FixZl+fLlLFq0iM8//xylFGPHjs2wDrd27dpp1l2+fJnhw4dTvXr1VNvj4+NTJSJeXl6cOXOG4sWLA1iGSMuoA9358+dxcXFJVSqUHVL+2K1cufKx+x08eJBFixZl+fi9e/emdOnSNGnSBFtbW6ZMmUKPHj348ccfLS2DGbXcr1mzxpIIpCRzp0+fxtvbO93XGjt2LOvXrwfMd1V27tyZql41xdtvv83WrVtZs2YNQ4YMeeI57Nixg+jo6HSH8Jw0aRLt27enffv2BAcHM2PGDJYuXYqfn1+aVvQURqMRGxubTHX+zYzsvvvTsWNHWrRowfLly3n99dfR6XSsWbOGevXqERISwmuvvcaiRYs4fPgwixYton///nTv3p3GjRvzyiuv4O3tTcmSJWnQoEG6xy9XrtxjO9S2adOGGzduPNVFj4ODAydPniQoKIh8+fLxxRdf8P333/PFF19w8eJFy+9XbGys5XfvUYULF6Zp06bs3LnTsu7dd99Ns9/du3fZv38/H3/88RPL2x4+1sMaNmxIbGxspieSWrBgQZrE8/Dhwxw+fNiy7ODgYEnu9Xo9rVu35ty5cwwePJgBAwYwfvx4PvvsszS/R7NmzaJbt24cPXqUZs2a4evrmyYRb9q0KU2bNuWvv/7ixo0blvU6nY7evXtnqiwns1KS8pTOsOkZOnQo06ZNS7WuVatW9O3blzFjxqS505aSSD9NWU6Kh++yLF68mI8++oirV69SuXLlJ57T6tWr09yNSrkwe/jzntIokd7fGCDV3T8hnoZ8ekSuNmrUKGrXrs2RI0eoXr06er2esWPH8sEHH2TqlvjD+6xYsYL+/fujlOLHH39M9Yfx1VdfTdVp0tbWlqpVq3Ljxg3q1avHhQsXKF68eKpWuoeP26VLF2xtbTl69KhlRIXskJKUPK4jIZj/mDxNcg+kajH95JNP0ty+TknuH62tfvhCJuW99PDwyDApdnR0tJzPwwnOo95880169OjBunXrMpXcr1y5Ejc3t1TnkaJMmTKWCwhfX1+MRiNOTk74+/vz8ssvM3/+/DTJSUJCQrYl9oCldvzOnTsEBASk2R4VFZVmfUYzBYeEhNC9e3f27NmDRqOhQYMG7NixI9U5GI1GPv74Y7p16waYx0MvVqwYERERjB07FqPRaLnIAvPF0cGDB9OUuaRIaYk+dOhQmkQN/h1/vnTp0pbXfJyCBQtaymYcHR2ZMGECP/zwAxERERQuXBgwf+bSq+WHf1u+4+PjKVasGJUqVeKXX35Js99HH32Era0t3bt3f2w827ZtY+3atYwePTrdco/0REZGMm3aNGrXrk379u0t6x9uhYYnj5ZjZ2fHxo0b2bhxI7169WLr1q1MmjQJOzs7Ro8ebdkvMDCQwYMHs3TpUv7++2/OnDmT4fuT4uHvN61Wm+mynMyIjIwkKCiIKlWqWEqUHpZyJ698+fLpPv+bb75Jd33K9/XD30FGo5HTp09b1gUEBGRYx757926OHj2KVqslICCA1atX888//zBs2DB++uknS8v9hQsXGDFiBDNnzqR8+fKWORtq1aqV5pjp3bls2LAh/v7+6cYA1h9lTbz4JLkXudYff/zBli1bUtXkjho1CldXV4xGIyaTKd1bzQ9LaWExGAwcOnQIV1dXNmzYwMsvv5xqv4ULF7Jjxw5q1arFwoULLR1tS5QoQYkSJShTpgwDBgxI95Z1yjBxycnJREZGZsOZ/0tlcbr4rO7/KK1Wy7Fjx9Dr9SxfvhwfH58MW+4fllJ/+6Q7F5kZ6cPT05NatWpx5MiRJw7Bd/v2bcvnI6O7Krdv32bEiBGsWLGCTp06sXjxYpYsWcLYsWNp3LgxM2bMSDWiRWRk5FMN7ZiRlORgxIgR6dbRr1+/PlWy/ThFixaldu3aVK5cmf79+3PhwgW2bdvGtWvXMixh+vjjjwkODmbPnj1ER0dz5MgRS38WMCftX331lWVSuEeltKb+9ddf6SZyer2epKQk3njjjUwl9496//33+eCDD/D392fx4sWMHj36sTX3KZycnOjZsydTp05l9+7dvPHGG5ZtR48e5eeff6Zbt25PHOkoMDCQH374gcGDB2c6ZqPRyPTp0xk2bFiq5P5peHt7W/qXtGjRgrJly7Jw4UKGDh1qaS2eOHGi5V8bG5snJvaPSk5OJjw8PN2LyPQuOJ9k3759mEymDDvTp5StZHWUqZTv60cvyFIugFKk9z0SHx9Pnz59qFWrFgkJCVSoUIGqVasyb948vvzySz744APLvinvX926ddNN6B+Wctc25TX37duHUgp7e/sMS5iOHz/Oa6+99p9GyhJ5myT3Ile6d+8enTt35vXXX081VJ6fnx8LFy4EUieyu3btomnTppw8eTLdkSR0Oh2LFi2yjHOdkJCQ5ss5ISGBY8eOpbkjsHTp0seOiz9o0CC8vLwoWbJkqpFfssOzTu7j4+NTzXB58eJFVqxYwY8//kh4eDhTpkyxJO6PS7ZatGjx2JasFJlt0erZsyetW7d+4myZcXFxNG3alDfffDPNtuTkZIYMGcLChQtJSkqiV69eDBgwgLt379KmTRsqVqzI3Llz6dq1K+vWrbM8759//kk1hn9G9cSZFRoaCpiT+EcTQY1GQ5cuXdJ02Fy2bFmGdd6jRo2y/P/ChQsAlC9fPsPSk+TkZMsMsG5ubjRv3jzV9gkTJjBhwoQM40/p/Pzll19m2AKdWXFxcak6YMbHx/Pnn3+yePFi9uzZg5ubG4MGDSIhIeGJyT38O7pP//79OXHiBA4ODsTGxtK1a1dcXFwee+GfIqUDaVbKKFKS7uwe5lCj0dCvXz/69Olj6Seye/dufvrpJz799NMMS8meJDk5me+++47vvvsu1fqMLjifJOXz+vAF1cNSkvuMxuHPyJQpU6hWrRp+fn5UqlSJs2fPUq1aNTZs2JDhqD0p+vbtS0BAAH/99ZdlPo4pU6bwySefkD9/fk6dOsWDBw9wcHDg/PnzAPz999+WVntHR8d0Z0q+ceMGBQoUsHxOPvzwwyc2OjRt2pQdO3Zk6dyFeJgk9yJXKliwINOmTbOM2f2w2NhYAgICUk1Df+7cOcA81nFKS5TJZEKv11OgQAFL/aqzszOTJk1Kdcv7Ua+++mq667du3Zru8IB2dnbpjlyRHZ5Vcj9lyhRLi/d7773HvHnz2L59O//88w+urq506tSJ7t2789prr1k6ImeUbN28eZO4uLhMva7RaCQgIID8+fOnGdHkYU8qQ0pRrlw5Nm/enO42W1tbyxT0J06cYP78+WlGIYmMjMTd3d0yOlJkZCRnzpyhc+fOln3+65CMV69eBUg1AlF2u3z58mNb7p+mdTY7nT17lnfffZdNmzYRHR3NwoUL2bhxI/v37ycxMZHq1auzYMECPvjgA0sfhcwk9/nz52fGjBl89tlndO/encWLF/P+++8TEBDA8uXLKVq06DM5n5QLqWfRMtujRw+WLFnCmDFjqFy5Mu+//z7Vq1fn22+/fepjGgyGNJNIaTQali5daql7j4uLy9R77u/vz6ZNmyhUqFCGFxspyf3jfsfTEx4eTp8+fXB3d2fnzp2sX78ejUbzxNb1M2fO8MMPP9CpU6dUdfAPl4BNnTo11UU8kGryrurVq6fbt+LSpUupSpdef/11Ll68aLmwfnikp7t37/LXX389trO5EJkhyb3ItXr37g38W/Od4uLFi9SvX99SRpAyuQiYJ7BxdXXFzs7OMivlkCFDUs2A2bt3b7p27Zqmxnj79u106tSJAwcOpOp8lTIRSkatUEajkdWrV1OqVCnL6DvZJSVZz+xQmOn1Q7hw4QJHjhzhwIEDlrHGZ8yYQYsWLWjWrBlGo5H58+dTvHhxpk+fTo8ePVL1LYiNjcXOzi7DIfK6d+/O9u3bs3ReAwYMYPbs2Vl6ztNIKdtycXFhxowZltGQlixZQvfu3S2lPC+99BL9+vVjxYoVAHTo0IHw8HDeeuutLI8p/qjjx4/j5OSUpc6KWfWklvvSpUtjMpmeS5lAXFwce/bs4eTJk5bPxfbt2/H19bX0edm7dy87d+6kXbt2DBo0KNV44SmtoplJNMH8+Utp3d65cyehoaH07t071QWatTxag58ZOp2OJUuWULNmTRo2bEihQoX4448/nngX61EP16U/qVP31KlTWbp0KfD40jmTyUTPnj0xGo0MHjw4w07V9+7dQ6PRZLm8zdPTk40bN9KiRQtq1KiBXq/nrbfeeuJFQrVq1Rg4cKBlTpP0TJs2zTJpXcpkcNu2bbP05UrvDl1SUhInT55MNRJYSv+Ovn37smjRImbNmkXJkiUxGAw0bNiQjh07/ufvDCEkuRd5Ts2aNVO1pv7zzz9UqVKFnj17cuLECZRS7N69O1W5ycM8PDzSvZ2eUi7g6uqa4TB86Zk5cybDhg1Dq9Xi7++fqqTjv0pJ1jM7FGZ6yf2vv/7KpEmTsLGx4Y033uD999/nrbfeSpXA//nnn7Ro0SLdBD46OvqxiZajoyMlS5bMVCKTUuKR1UTlWUlJTho3boyfnx9Vq1alb9++xMXFUb16dYYMGfJUZQsp4uPjOXToEPXr109T9vFf+0fAvyVDKS33ycnJXLp0ie+++46OHTvSqFEjZs+ezYgRI/jyyy+ZOXPmf37NzMTUqVMn4uPjKVq0KAMHDuS9995LdUds7NixTJs2Ld2Jg1Iu1DOb3N+/f9/yO5dSAuXs7ExoaGimykKy4+eQXUwmE7t372bevHmWuOLi4vjqq6/o2bNnpjq/3r17l7179xISEsL3339vuRPw6PCMK1eupE6dOgA0b96c8PBwGjRo8Njylz59+rB//36qVq1quVBOT8oM008zYkyNGjVYsmSJpUVcKUVQUNAT73zNmjXL8n+TyZTm5/rwZy3lu8/d3f2xned37NhBTExMuuVHY8aM4aeffuK9995jz549fPHFFwQGBrJ27donn6QQTyDJvcjT9u3bR+fOnfHz82P69OmEhIRQr149mjRpwqpVq1J18IyLi8PW1hZbW9unmjbeaDRaWtAfrhtOaZ2yt7fP8ILiaaUk66tXr37sfvv372fhwoXpjiLRrVs3jEYjPXv2zHCYyrZt26a7Pi4ujhMnTjz2YsfGxobk5ORMlX6ktMqmdxGxe/duDh06hJubGw4ODpaf0dGjRwHzBUhAQAD3798HzHdwUvpfgLl1MjY2Fg8PDz7//PM0xx8wYIClxChFSgJw+/Zt2rZti7u7O2PHjgXglVdeYeTIkQQEBLBkyZKnGvpxxYoVxMXF0bFjxzTbUn62D1+QpXQUT6kJflJylDJbZr9+/Thx4gQ//vgj8fHx+Pv707x5cxwdHYmPj6dx48aPLUV7nJT4Mtv3wNXVlYkTJ1K6dGnatm2bbj+Lxw1LuG/fPiDt3AwPS05OZu/evfz666/88ssvxMfHU7NmTbp37863337LjBkzmDNnDvXr16dFixZUqlSJsmXLki9fPsudvRQpDQWPuyjP6Pviv14Y6PV6goODOXHiBAcOHGDDhg2EhoZSoEABJk+ezFtvvcXs2bNZsGABc+fOpXz58jRq1IhKlSpZRu96eKKx5ORkOnToYBmDvmfPnuzevZsxY8ZQqVKlVK/9cOnbK6+8YhnlKzAwkEuXLqXqHxITE8Onn37Kb7/9hqenJ+vWrUvz2TSZTCQkJHDw4EFOnz6dbknlo1I+7ykMBgMLFixgxIgReHt706JFC5YtW8b69eupWrUq9erVo0yZMnh5eaHT6WjXrl26HemNRqPlboXBYODUqVM4OTmh0+nQaDSWYUKvX79Ovnz5LBP6xcXF8dprr1nObcWKFWi12lQd0FN4enry7bff8uGHH1K+fHkePHjAjh07LCM+CfGfKCFyuYiICAWor7/+Wiml1MWLF9V3332nateurQDVqVMnFRsba9n/8uXLqlKlSsrW1la1bdtWrV27VimlVPv27RXwnx8ffPBBmhj37dunrl69mu3n/tlnn6nM/JovXbpUAerAgQPZ8rr169dXpUqVUs7OzgpQ7733Xob7Ps37OnTo0DTHmThxYrb8fOrWrZvm2HZ2dmrkyJEqMDBQBQYGqilTpihAPXjwQM2fP18VKFBAFS9ePNXPMCEhQTVq1EgBqm/fvll+D+/du6cKFy6svLy8Un0+U8TGxipAdejQwbJuxYoVlvNwcHBQ9+7dy/D4iYmJytPTUwGqWrVqavr06er+/fuW7cHBwWrSpEmqZMmSClBOTk7qq6++yvJ5BAQEKEANGzYsy8/NrD/++EOVKlVKFStWTAHKxsZG+fv7p9pn0aJF6uOPP1Y1a9ZUDg4OlvepZs2aas2aNZb9jEajWrlypXr11VfT/XykfI+k+Pvvv9XSpUuz9Fi4cKEC1MSJE5/6nP/++29lZ2dniUuj0ag6deqoH374QcXHx6faNyQkRE2cOFGVL18+1bl079491X6ff/65AlS9evXUsWPH1Pjx45Wrq6sCVNGiRdU777yjPv/8czVs2DA1cuRINWjQINWzZ0/19ttvq1q1ail3d3cFqFGjRlmOGRERoXx9fRWgvL291YULF9Kcy7179yzfFSmPMWPGPPE9aNu2rapcubJSSqkpU6Yob29vBah27dpZPsvXrl1TI0eOVGXKlEl1/FdffTXD4/r6+qr27dsrpZQKCwvL0vdHWFiYUkqpU6dOKY1Go958881Ux05OTlaXLl1SCxYsUO+++67lZ+jm5qZ69eqlNm3apO7cuaNMJtMTz1+IjEhyL3K9kJAQBahp06Ypk8mkunfvrgDVsGFDtX///nSfk5CQoMaOHavy58+vVq9ebTnOrVu3VGhoqAoLC8vy4969e+rWrVvq7t27z+3cu3btmqnk/s6dO2rv3r0qMjIyW163f//+qmDBgqpu3bpq2LBhqZLGRzVt2lSVLFkyU8e9du2aAlS/fv3SbAsJCVH+/v4qJCRE3b9/X0VERGTpERoaqv755x915cqVVMc1GAwKUHPmzLGsW7x4sQLU9u3bVYECBdRrr72mbt68mSam8PBw1bp1a/XgwYNMnd/DTp8+rSpXrpzqdR+WlJSkVq9eneqCLDIyUr3yyitqwIAB6vjx4098jd9++039/PPPj93HaDSq9evXqw4dOjzVZ/fMmTMKUP3798/yczMrLCxMubq6qrJly6qOHTuqTZs2pdknICBAOTo6KkCVLFlSDRgwQJ08efKxxz1//ryaOXOmevvtt5WPj4/y8PBQycnJ/znemJiYbHlPhg4dqj788EO1ePFiFRISkqnnBAYGqkWLFqmePXuqS5cuWdabTCb1ySefqJIlS6rw8HDL+vDwcDVv3jzVsWNH9fLLL6uiRYsqNzc35eTkpBwdHZWzs7Nyd3dXXl5eqnjx4srX11dt37491WuePHlStW3bVoWGhmYYV+fOnVXJkiXVm2++qebNm5ep97lJkybK19dXKWX+falWrZr6/fffM9z/5s2bas2aNWrq1Klq48aNGe5XokQJ1aJFC6WU+fdsx44d6uzZsyogIMBygf/w48qVK8rf31+dOnXKEveWLVuUu7u72rNnj1JKqR49eqiCBQsqrVZruQCtVauWmjNnjjpw4IAaOHCgKl68uOUiwdbWVuXLly/NeylEZmiUykEFg0I8BwkJCZmecTAxMTHH1HeLnOnmzZsULlw4ww7D/4XJZMJkMslsldlk//79FClShHLlyj3V8/V6/VOVV71I7t69K6Uh2eTKlSuWz9rhw4eZN28eVapUoUqVKtSoUYMCBQqk2l8pxbFjxzh8+DAXL15Eq9WyePFia4QuXnCS3AshhBBCCJFLyPRnQgghhBBC5BKS3AshhBBCCJFL5KpCTpPJREhICK6urk81VKEQQgghhBA5kVKKmJgYihYt+thJBXNVch8SEpLhONxCCCGEEEK86G7evEnx4sUz3J6rkntXV1fAfNJubm5WjkYIIYQQQojsER0djbe3tyXfzUiuSu5TSnHc3NwkuRdCCCGEELnOk0rPpUOtEEIIIYQQuYQk90IIIYQQQuQSktwLIYQQQgiRS+SqmvvMMhqNJCcnWzsM8RzY2dk9drgoIYQQQojcJE8l90op7t69S2RkpLVDEc+JjY0NpUqVws7OztqhCCGEEEI8c3kquU9J7AsW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JqxdC1df/du5v/3NCvjdu9tXl4iIiIgPKLfDclavXk2bNm1wOq2FfFq0aIHb7WbdunU2VyZF2rABevSA1q3hp59+O//IIwr2IiIiImXI68L90aNHiY2NLTh2OBxER0dz7NixQtfm5uaSnp5+xoeUoSNH4MEHoVUrWLkSAgNh82a7qxIRERGpsLwu3IO1gsvZx8Y5diudOXMmkZGRBR/x8fFlVWLFlp0N06dDgwbwj39YQ3L694ft262wLyIiIiK28LpwX61aNZKSkgqO3W43qampVK1atdC1Y8eOJS0treDjwIEDZVlqxWSa0K0bTJgAmZnQti388AP8619ar15ERETEZl4X7jt16sSaNWtwuVwArF+/HqfTScuWLQtdGxgYSERExBkfUsoMAwYPhvh4eP99+PFHaN/e7qpEREREBC8M9x07dqRy5co89dRTHDx4kClTpnDbbbcREhJid2kV0/79cPfdVs/8afffbw3BuesuK+yLiIiIiFfwunDvcDhYuHAhixcvpn79+uTk5DB37ly7y6p4Tp2yht40amQF+7Fj4X//m4KfHwQH21ufiIiIiBTitLuAc2nVqhUbN260u4yKye2Gt9+G8ePh6FHrXJcuMHeutcusiIiIiHgtpTX5zU8/wdCh1rr1APXqWTvL9u2r4TciIiIi5YDXDcsRG2VnW8E+MhKeew4SEuDWWxXsRURERMoJ9dxXZCkpsGYN9OplHXftCq+9BrfdBr/bSExEREREygf13FdE+fnw179C/fpWz/yhQ7+9NmSIgr2IiIhIOaVwX5GYJixZAs2bw/DhcPIk1K4Nv9s0TERERETKL4X7imLzZrjuOujTB7Zts3rn//532LgRWrSwuzoRERERKQEac18RpKRA27aQlQUBAfDYY9ZSl5GRdlcmIiIiIiVI4d5Xud3WZlMA0dHw6KOwaxc884y1xKWIiIiI+BwNy/E1pgkffggNG1or4Zw2c6Z1XsFeRERExGcp3PuSX36xdpO94w7YvRtmzfrtNYeaWkRERMTXKfH5gkOH4L77oHVrWLUKgoNh0iR45x27KxMRERGRMqQx9+XdSy/B2LHWZFmAe+6BGTMgPt7eukRERESkzCncl3fBwVawv+YaeP55aNPG7opERERExCYK9+XN999bYb5XL+v4gQegWjW48UYwDHtrExERERFbacx9ebFnjzVR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NpkyZQqJiYl8/fXXxMTEAHqevM252kjPkndZv349N954Y8Hx6d734jKD17ZT2c7f9U1ut9usW7euOW7cOPPAgQPmTTfdZN5zzz12l1XhHT9+3AwLCzPfeOMNc/fu3Wb37t3Nhx9+WO3lRfjdKizFtYvazF6/b6einivTVDvZ4ciRI2ZERIT5ww8/mCkpKQUfep68R1FtdPToUT1LXiQlJcWMjo42X375ZfPAgQPmwIEDzU6dOpXLZ0nhvoSsXbvWbN68uRkYGGj27NnTPH78uN0liWktZdWwYUMzKirKHDhwoJmRkWGaptrLW3DWEovFtYvazD5nt1NRz5Vpqp3K2j//+U8TKPSxZ88ePU9eorg20rPkXVauXGk2b97cDAsLM3v16mXu3bvXNM3y92+TYZpnzQQQEREREZFySWPuRURERER8hMK9iIiIiIiPULgXEREREfERCvciIiIiIj5C4V5ERERExEco3IuIiIiI+AiFexGRCiAnJ+e817jdbnJzcyluhWSXy0Vubu4F3fPUqVMXXJ+IiJQMhXsRES938803ExsbS+3atalduzYRERFERUUVHNesWRPDMAqF8lmzZlGnTh26dOnCAw88wPLly+nQoQNdu3ala9eu+Pv78+uvvxZcv3btWipVqkRsbGzBR0BAAOHh4QXHMTExPP7444VqbNeuHR999FHBscvlonr16ixcuPCCf59btmzBMAyys7Mv6vvz3nvv0aZNm4v6GhERX+W0uwARESmev78/c+bM4f777wdgxIgRhIWFMW3aNAD27t1LgwYNMAwDsIL1qlWrCAoK4sEHH2TChAkF73XVVVdRuXJlfv31V4YOHUqzZs0KXmvTpk2h3vY+ffrQr1+/gnsXJSgoiODg4ILjVatWERAQwM0333zO691uNx6PB39//4JzAQEBBe/1e/n5+fj5+eFwWP1RmzdvZvHixYwZMwaAqKioM+6dlJTECy+8wPTp04utWUTEF6nnXkTEy/n5+V3UNdOnT2fQoEEsXLiQZcuWUalSJebNmwfAsGHDGDhwIE8++SQzZswo9D579uzhww8/POc9MjIyePzxx0lLSzvn66d/uACrNz0zM5MaNWoU9PpHRESwdu1aAL7++mvi4+O57LLLCv4Holu3bgDUqVOn4FytWrWoXbs233//fcF7Hz58mM8++6zg2Ol0nnHvU6dO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",
      "text/plain": [
       "<Figure size 900x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(9, 6)) # 设置画布大小\n",
    "plt.scatter(\n",
    "    example10_7['用餐平均支出'], example10_7['日均营业额'], \n",
    "    c=(example10_7['交通方便程度'] == '方便')\n",
    ") # 绘制散点图\n",
    "slope = modeld.params['用餐平均支出'] # 提取斜率\n",
    "intercept1 = modeld.params['Intercept'] # 提取截距\n",
    "intercept2 = intercept1 + modeld.params['交通方便程度[T.方便]'] # 提取截距\n",
    "x = np.array([0, 300]) # 设置x轴取值\n",
    "plt.plot(x, slope*x+intercept2, label='交通=方便') # 绘制回归直线-方便\n",
    "plt.plot(x, slope*x+intercept1, 'r--', label='交通=不方便') # 绘制回归直线-不方便\n",
    "plt.legend() # 显示图例\n",
    "plt.xlabel('用餐平均支出') # 设置x轴标签\n",
    "plt.ylabel('日均营业额') # 设置y轴标签\n",
    "plt.title('模型：日均营业额~用餐平均支出+交通方便程度', fontsize=15) # 设置标题\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>餐馆编号</th>\n",
       "      <th>日均营业额</th>\n",
       "      <th>用餐平均支出</th>\n",
       "      <th>交通方便程度</th>\n",
       "      <th>点预测值</th>\n",
       "      <th>残差</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>53.2</td>\n",
       "      <td>168.6</td>\n",
       "      <td>方便</td>\n",
       "      <td>54.4561</td>\n",
       "      <td>-1.2561</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>18.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>方便</td>\n",
       "      <td>12.6111</td>\n",
       "      <td>5.8889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>11.3</td>\n",
       "      <td>109.4</td>\n",
       "      <td>不方便</td>\n",
       "      <td>22.8795</td>\n",
       "      <td>-11.5795</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>84.7</td>\n",
       "      <td>277.0</td>\n",
       "      <td>方便</td>\n",
       "      <td>85.5033</td>\n",
       "      <td>-0.8033</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>7.3</td>\n",
       "      <td>17.4</td>\n",
       "      <td>不方便</td>\n",
       "      <td>-3.4705</td>\n",
       "      <td>10.7705</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>6</td>\n",
       "      <td>17.9</td>\n",
       "      <td>93.0</td>\n",
       "      <td>方便</td>\n",
       "      <td>32.8032</td>\n",
       "      <td>-14.9032</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>7</td>\n",
       "      <td>2.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>不方便</td>\n",
       "      <td>-2.2962</td>\n",
       "      <td>4.7962</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>8</td>\n",
       "      <td>27.3</td>\n",
       "      <td>114.5</td>\n",
       "      <td>方便</td>\n",
       "      <td>38.9611</td>\n",
       "      <td>-11.6611</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>9</td>\n",
       "      <td>5.9</td>\n",
       "      <td>61.3</td>\n",
       "      <td>不方便</td>\n",
       "      <td>9.1030</td>\n",
       "      <td>-3.2030</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>10</td>\n",
       "      <td>23.9</td>\n",
       "      <td>129.8</td>\n",
       "      <td>方便</td>\n",
       "      <td>43.3433</td>\n",
       "      <td>-19.4433</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>11</td>\n",
       "      <td>69.4</td>\n",
       "      <td>159.4</td>\n",
       "      <td>方便</td>\n",
       "      <td>51.8211</td>\n",
       "      <td>17.5789</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>12</td>\n",
       "      <td>20.6</td>\n",
       "      <td>91.0</td>\n",
       "      <td>方便</td>\n",
       "      <td>32.2304</td>\n",
       "      <td>-11.6304</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>13</td>\n",
       "      <td>1.9</td>\n",
       "      <td>6.1</td>\n",
       "      <td>不方便</td>\n",
       "      <td>-6.7070</td>\n",
       "      <td>8.6070</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>14</td>\n",
       "      <td>3.0</td>\n",
       "      <td>60.3</td>\n",
       "      <td>不方便</td>\n",
       "      <td>8.8166</td>\n",
       "      <td>-5.8166</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>15</td>\n",
       "      <td>7.3</td>\n",
       "      <td>51.1</td>\n",
       "      <td>不方便</td>\n",
       "      <td>6.1816</td>\n",
       "      <td>1.1184</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>16</td>\n",
       "      <td>46.2</td>\n",
       "      <td>73.6</td>\n",
       "      <td>方便</td>\n",
       "      <td>27.2468</td>\n",
       "      <td>18.9532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>17</td>\n",
       "      <td>78.8</td>\n",
       "      <td>171.7</td>\n",
       "      <td>方便</td>\n",
       "      <td>55.3440</td>\n",
       "      <td>23.4560</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>18</td>\n",
       "      <td>11.1</td>\n",
       "      <td>38.8</td>\n",
       "      <td>不方便</td>\n",
       "      <td>2.6587</td>\n",
       "      <td>8.4413</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>19</td>\n",
       "      <td>8.6</td>\n",
       "      <td>105.3</td>\n",
       "      <td>不方便</td>\n",
       "      <td>21.7052</td>\n",
       "      <td>-13.1052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>20</td>\n",
       "      <td>48.9</td>\n",
       "      <td>161.5</td>\n",
       "      <td>不方便</td>\n",
       "      <td>37.8017</td>\n",
       "      <td>11.0983</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>21</td>\n",
       "      <td>22.1</td>\n",
       "      <td>122.6</td>\n",
       "      <td>不方便</td>\n",
       "      <td>26.6602</td>\n",
       "      <td>-4.5602</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>22</td>\n",
       "      <td>11.1</td>\n",
       "      <td>38.8</td>\n",
       "      <td>方便</td>\n",
       "      <td>17.2796</td>\n",
       "      <td>-6.1796</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>23</td>\n",
       "      <td>8.6</td>\n",
       "      <td>105.3</td>\n",
       "      <td>不方便</td>\n",
       "      <td>21.7052</td>\n",
       "      <td>-13.1052</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>24</td>\n",
       "      <td>48.9</td>\n",
       "      <td>161.5</td>\n",
       "      <td>不方便</td>\n",
       "      <td>37.8017</td>\n",
       "      <td>11.0983</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>25</td>\n",
       "      <td>22.1</td>\n",
       "      <td>122.6</td>\n",
       "      <td>不方便</td>\n",
       "      <td>26.6602</td>\n",
       "      <td>-4.5602</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "    餐馆编号  日均营业额  用餐平均支出 交通方便程度     点预测值       残差\n",
       "0      1   53.2   168.6     方便  54.4561  -1.2561\n",
       "1      2   18.5    22.5     方便  12.6111   5.8889\n",
       "2      3   11.3   109.4    不方便  22.8795 -11.5795\n",
       "3      4   84.7   277.0     方便  85.5033  -0.8033\n",
       "4      5    7.3    17.4    不方便  -3.4705  10.7705\n",
       "5      6   17.9    93.0     方便  32.8032 -14.9032\n",
       "6      7    2.5    21.5    不方便  -2.2962   4.7962\n",
       "7      8   27.3   114.5     方便  38.9611 -11.6611\n",
       "8      9    5.9    61.3    不方便   9.1030  -3.2030\n",
       "9     10   23.9   129.8     方便  43.3433 -19.4433\n",
       "10    11   69.4   159.4     方便  51.8211  17.5789\n",
       "11    12   20.6    91.0     方便  32.2304 -11.6304\n",
       "12    13    1.9     6.1    不方便  -6.7070   8.6070\n",
       "13    14    3.0    60.3    不方便   8.8166  -5.8166\n",
       "14    15    7.3    51.1    不方便   6.1816   1.1184\n",
       "15    16   46.2    73.6     方便  27.2468  18.9532\n",
       "16    17   78.8   171.7     方便  55.3440  23.4560\n",
       "17    18   11.1    38.8    不方便   2.6587   8.4413\n",
       "18    19    8.6   105.3    不方便  21.7052 -13.1052\n",
       "19    20   48.9   161.5    不方便  37.8017  11.0983\n",
       "20    21   22.1   122.6    不方便  26.6602  -4.5602\n",
       "21    22   11.1    38.8     方便  17.2796  -6.1796\n",
       "22    23    8.6   105.3    不方便  21.7052 -13.1052\n",
       "23    24   48.9   161.5    不方便  37.8017  11.0983\n",
       "24    25   22.1   122.6    不方便  26.6602  -4.5602"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 哑变量回归预测\n",
    "df_res = example10_7.copy() # 复制数据\n",
    "df_res['点预测值'] = modeld.fittedvalues # 提取点预测值\n",
    "df_res['残差'] = modeld.resid # 提取残差\n",
    "round(df_res, 4) # 显示结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df_resid</th>\n",
       "      <th>ssr</th>\n",
       "      <th>df_diff</th>\n",
       "      <th>ss_diff</th>\n",
       "      <th>F</th>\n",
       "      <th>Pr(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>23.0</td>\n",
       "      <td>4441.602234</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>22.0</td>\n",
       "      <td>3260.113508</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1181.488726</td>\n",
       "      <td>7.972959</td>\n",
       "      <td>0.009889</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   df_resid          ssr  df_diff      ss_diff         F    Pr(>F)\n",
       "0      23.0  4441.602234      0.0          NaN       NaN       NaN\n",
       "1      22.0  3260.113508      1.0  1181.488726  7.972959  0.009889"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用anova比较两个模型-是否引入交通方便程度哑变量\n",
    "models = ols(\"日均营业额~用餐平均支出\", data=example10_7).fit() # 拟合回归模型\n",
    "modeld = ols(\"日均营业额~用餐平均支出+交通方便程度\", data=example10_7).fit() # 拟合回归模型\n",
    "anova_lm(models, modeld, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于P<0.05，表明两个模型有显著差异。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>模型1</th>\n",
       "      <td>204.444292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>模型2</th>\n",
       "      <td>198.712963</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            AIC\n",
       "模型1  204.444292\n",
       "模型2  198.712963"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 用AIC比较两个模型-是否引入交通方便程度哑变量\n",
    "pd.DataFrame({'AIC': [models.aic, modeld.aic]}, index=['模型1', '模型2']) # 显示AIC值"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "哑变量回归模型的AIC值更小，意味着引入交通方便程度哑变量后，模型得到了改进。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 习题"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>不良贷款</th>\n",
       "      <th>贷款余额</th>\n",
       "      <th>应收贷款</th>\n",
       "      <th>贷款项目个数</th>\n",
       "      <th>固定资产投资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.9</td>\n",
       "      <td>67.3</td>\n",
       "      <td>6.8</td>\n",
       "      <td>5</td>\n",
       "      <td>51.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1.1</td>\n",
       "      <td>111.3</td>\n",
       "      <td>19.8</td>\n",
       "      <td>16</td>\n",
       "      <td>90.9</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4.8</td>\n",
       "      <td>173.0</td>\n",
       "      <td>7.7</td>\n",
       "      <td>17</td>\n",
       "      <td>73.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.2</td>\n",
       "      <td>80.8</td>\n",
       "      <td>7.2</td>\n",
       "      <td>10</td>\n",
       "      <td>14.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7.8</td>\n",
       "      <td>199.7</td>\n",
       "      <td>16.5</td>\n",
       "      <td>19</td>\n",
       "      <td>63.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   不良贷款   贷款余额  应收贷款  贷款项目个数  固定资产投资\n",
       "0   0.9   67.3   6.8       5    51.9\n",
       "1   1.1  111.3  19.8      16    90.9\n",
       "2   4.8  173.0   7.7      17    73.7\n",
       "3   3.2   80.8   7.2      10    14.5\n",
       "4   7.8  199.7  16.5      19    63.2"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap10/exercise10_1.csv', encoding='gbk') # 读取数据\n",
    "df.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>          <td>不良贷款</td>       <th>  R-squared:         </th> <td>   0.798</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.757</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   19.70</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>1.04e-06</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:03</td>     <th>  Log-Likelihood:    </th> <td> -47.082</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   104.2</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    20</td>      <th>  BIC:               </th> <td>   110.3</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     4</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   -1.0216</td> <td>    0.782</td> <td>   -1.306</td> <td> 0.206</td> <td>   -2.654</td> <td>    0.610</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>贷款余额</th>      <td>    0.0400</td> <td>    0.010</td> <td>    3.837</td> <td> 0.001</td> <td>    0.018</td> <td>    0.062</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>应收贷款</th>      <td>    0.1480</td> <td>    0.079</td> <td>    1.879</td> <td> 0.075</td> <td>   -0.016</td> <td>    0.312</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>贷款项目个数</th>    <td>    0.0145</td> <td>    0.083</td> <td>    0.175</td> <td> 0.863</td> <td>   -0.159</td> <td>    0.188</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>固定资产投资</th>    <td>   -0.0292</td> <td>    0.015</td> <td>   -1.937</td> <td> 0.067</td> <td>   -0.061</td> <td>    0.002</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 0.316</td> <th>  Durbin-Watson:     </th> <td>   2.626</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.854</td> <th>  Jarque-Bera (JB):  </th> <td>   0.442</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.220</td> <th>  Prob(JB):          </th> <td>   0.802</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.520</td> <th>  Cond. No.          </th> <td>    352.</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                   不良贷款   R-squared:                       0.798\n",
       "Model:                            OLS   Adj. R-squared:                  0.757\n",
       "Method:                 Least Squares   F-statistic:                     19.70\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           1.04e-06\n",
       "Time:                        17:30:03   Log-Likelihood:                -47.082\n",
       "No. Observations:                  25   AIC:                             104.2\n",
       "Df Residuals:                      20   BIC:                             110.3\n",
       "Df Model:                           4                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept     -1.0216      0.782     -1.306      0.206      -2.654       0.610\n",
       "贷款余额           0.0400      0.010      3.837      0.001       0.018       0.062\n",
       "应收贷款           0.1480      0.079      1.879      0.075      -0.016       0.312\n",
       "贷款项目个数         0.0145      0.083      0.175      0.863      -0.159       0.188\n",
       "固定资产投资        -0.0292      0.015     -1.937      0.067      -0.061       0.002\n",
       "==============================================================================\n",
       "Omnibus:                        0.316   Durbin-Watson:                   2.626\n",
       "Prob(Omnibus):                  0.854   Jarque-Bera (JB):                0.442\n",
       "Skew:                           0.220   Prob(JB):                        0.802\n",
       "Kurtosis:                       2.520   Cond. No.                         352.\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (1) 用不良贷款作因变量，建立多元线性回归模型\n",
    "model = ols(\"不良贷款~贷款余额+应收贷款+贷款项目个数+固定资产投资\", data=df).fit() # 拟合回归模型\n",
    "model.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的回归方程为：\n",
    "- $\\hat{y} = -1.0216 + 0.0400 \\times 贷款余额 + 0.1480 \\times 应收贷款 + 0.0145 \\times 贷款项目个数 - 0.0292 \\times 固定资产投资$\n",
    "\n",
    "回归系数的含义：\n",
    "- $\\hat \\beta_1 = 0.0400$：当其他自变量不变时，贷款余额每变动1亿元，不良贷款平均变动0.0400亿元；\n",
    "- $\\hat \\beta_2 = 0.1480$：当其他自变量不变时，应收贷款每变动1亿元，不良贷款平均变动0.1480亿元；\n",
    "- $\\hat \\beta_3 = 0.0145$：当其他自变量不变时，贷款项目个数每变动1个，不良贷款平均变动0.0145亿元；\n",
    "- $\\hat \\beta_4 = -0.0292$：当其他自变量不变时，固定资产投资每变动1亿元，不良贷款平均变动-0.0292亿元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>贷款余额</th>\n",
       "      <th>应收贷款</th>\n",
       "      <th>贷款项目个数</th>\n",
       "      <th>固定资产投资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>贷款余额</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.678772</td>\n",
       "      <td>0.848416</td>\n",
       "      <td>0.779702</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>应收贷款</th>\n",
       "      <td>0.678772</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.585831</td>\n",
       "      <td>0.472431</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>贷款项目个数</th>\n",
       "      <td>0.848416</td>\n",
       "      <td>0.585831</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.746646</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>固定资产投资</th>\n",
       "      <td>0.779702</td>\n",
       "      <td>0.472431</td>\n",
       "      <td>0.746646</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            贷款余额      应收贷款    贷款项目个数    固定资产投资\n",
       "贷款余额    1.000000  0.678772  0.848416  0.779702\n",
       "应收贷款    0.678772  1.000000  0.585831  0.472431\n",
       "贷款项目个数  0.848416  0.585831  1.000000  0.746646\n",
       "固定资产投资  0.779702  0.472431  0.746646  1.000000"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (2) 分析模型中是否存在多重共线性。\n",
    "corr = df.iloc[:, 1:].corr() # 计算相关系数矩阵\n",
    "corr # 显示相关系数矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>贷款余额</th>\n",
       "      <th>应收贷款</th>\n",
       "      <th>贷款项目个数</th>\n",
       "      <th>固定资产投资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>贷款余额</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>应收贷款</th>\n",
       "      <td>0.000025</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004107</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>贷款项目个数</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.004107</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000023</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>固定资产投资</th>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.000023</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            贷款余额      应收贷款    贷款项目个数    固定资产投资\n",
       "贷款余额         0.0  0.000025       0.0       0.0\n",
       "应收贷款    0.000025       0.0  0.004107       0.0\n",
       "贷款项目个数       0.0  0.004107       0.0  0.000023\n",
       "固定资产投资       0.0       0.0  0.000023       0.0"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "col = ['贷款余额', '应收贷款', '贷款项目个数', '固定资产投资'] # 自变量名称\n",
    "df_pvalue = pd.DataFrame(columns=col, index=col) # 创建p值的数据框\n",
    "for i in range(1, 5): # 遍历自变量\n",
    "    for j in range(1, 5): # 遍历自变量\n",
    "        cor, p_value = pearsonr(example10_1.iloc[:, i], example10_1.iloc[:, j]) # 计算相关系数和p值\n",
    "        df_pvalue.iloc[i-2, j-2] = p_value # 将p值存入数据框\n",
    "df_pvalue # 显示p值的数据框"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "自变量相关系数检验结果表明, 各个自变量之间均显著相关，存在多重共线性。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>贷款余额</th>\n",
       "      <th>应收贷款</th>\n",
       "      <th>贷款项目个数</th>\n",
       "      <th>固定资产投资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>VIF</th>\n",
       "      <td>5.330807</td>\n",
       "      <td>1.88986</td>\n",
       "      <td>3.834823</td>\n",
       "      <td>2.781220</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tolerance</th>\n",
       "      <td>0.187589</td>\n",
       "      <td>0.52914</td>\n",
       "      <td>0.260768</td>\n",
       "      <td>0.359554</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               贷款余额     应收贷款    贷款项目个数    固定资产投资\n",
       "VIF        5.330807  1.88986  3.834823  2.781220\n",
       "tolerance  0.187589  0.52914  0.260768  0.359554"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def vif(df_exog, exog_name):\n",
    "    exog_use = list(df_exog.columns) # 提取自变量名称\n",
    "    exog_use.remove(exog_name) # 剔除当前自变量\n",
    "    model = ols(f'{exog_name}~{\"+\".join(exog_use)}', data=df_exog).fit() # 拟合回归模型\n",
    "    rsq = model.rsquared # 计算决定系数\n",
    "    return 1. / (1. - rsq) # 返回方差膨胀因子\n",
    "\n",
    "df_vif = pd.DataFrame() # 创建空数据框\n",
    "for x in ['贷款余额', '应收贷款', '贷款项目个数', '固定资产投资']: # 遍历自变量\n",
    "    vif_i = vif(df.iloc[:, 1:], x) # 计算方差膨胀因子\n",
    "    df_vif.loc['VIF', x] = vif_i # 将方差膨胀因子存入数据框\n",
    "\n",
    "df_vif.loc['tolerance'] = 1 / df_vif.loc['VIF'] # 计算容忍度\n",
    "df_vif # 显示容忍度和方差膨胀因子"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "结果表明：\n",
    "- $VIF \\ge 5$ 表明存在多重共线性，需要进行处理。\n",
    "- $容忍度 > 0.1$ 表明多重共线性不严重。 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>z不良贷款</th>\n",
       "      <th>z贷款余额</th>\n",
       "      <th>z应收贷款</th>\n",
       "      <th>z贷款项目个数</th>\n",
       "      <th>z固定资产投资</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.799687</td>\n",
       "      <td>-0.672838</td>\n",
       "      <td>-0.468521</td>\n",
       "      <td>-1.201417</td>\n",
       "      <td>-0.180078</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.743132</td>\n",
       "      <td>-0.113918</td>\n",
       "      <td>1.625968</td>\n",
       "      <td>0.109653</td>\n",
       "      <td>0.810755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.303134</td>\n",
       "      <td>0.669841</td>\n",
       "      <td>-0.323518</td>\n",
       "      <td>0.228841</td>\n",
       "      <td>0.373773</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.149305</td>\n",
       "      <td>-0.501352</td>\n",
       "      <td>-0.404075</td>\n",
       "      <td>-0.605476</td>\n",
       "      <td>-1.130261</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.151458</td>\n",
       "      <td>1.009004</td>\n",
       "      <td>1.094290</td>\n",
       "      <td>0.467218</td>\n",
       "      <td>0.107010</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      z不良贷款     z贷款余额     z应收贷款   z贷款项目个数   z固定资产投资\n",
       "0 -0.799687 -0.672838 -0.468521 -1.201417 -0.180078\n",
       "1 -0.743132 -0.113918  1.625968  0.109653  0.810755\n",
       "2  0.303134  0.669841 -0.323518  0.228841  0.373773\n",
       "3 -0.149305 -0.501352 -0.404075 -0.605476 -1.130261\n",
       "4  1.151458  1.009004  1.094290  0.467218  0.107010"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (3) 比较4个自变量在不良贷款中的相对重要性。\n",
    "dfz = df.copy() # 复制数据\n",
    "dfz = stats.zscore(dfz) # 计算标准化后的数据\n",
    "dfz.columns = ['z不良贷款', 'z贷款余额', 'z应收贷款', 'z贷款项目个数', 'z固定资产投资'] # 重命名列名\n",
    "dfz.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>          <td>z不良贷款</td>      <th>  R-squared:         </th> <td>   0.798</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.757</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   19.70</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>1.04e-06</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:04</td>     <th>  Log-Likelihood:    </th> <td> -15.504</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    25</td>      <th>  AIC:               </th> <td>   41.01</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    20</td>      <th>  BIC:               </th> <td>   47.10</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     4</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>-1.928e-17</td> <td>    0.101</td> <td>-1.92e-16</td> <td> 1.000</td> <td>   -0.210</td> <td>    0.210</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>z贷款余额</th>     <td>    0.8913</td> <td>    0.232</td> <td>    3.837</td> <td> 0.001</td> <td>    0.407</td> <td>    1.376</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>z应收贷款</th>     <td>    0.2598</td> <td>    0.138</td> <td>    1.879</td> <td> 0.075</td> <td>   -0.029</td> <td>    0.548</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>z贷款项目个数</th>   <td>    0.0345</td> <td>    0.197</td> <td>    0.175</td> <td> 0.863</td> <td>   -0.376</td> <td>    0.445</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>z固定资产投资</th>   <td>   -0.3249</td> <td>    0.168</td> <td>   -1.937</td> <td> 0.067</td> <td>   -0.675</td> <td>    0.025</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 0.316</td> <th>  Durbin-Watson:     </th> <td>   2.626</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.854</td> <th>  Jarque-Bera (JB):  </th> <td>   0.442</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.220</td> <th>  Prob(JB):          </th> <td>   0.802</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.520</td> <th>  Cond. No.          </th> <td>    4.82</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                  z不良贷款   R-squared:                       0.798\n",
       "Model:                            OLS   Adj. R-squared:                  0.757\n",
       "Method:                 Least Squares   F-statistic:                     19.70\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           1.04e-06\n",
       "Time:                        17:30:04   Log-Likelihood:                -15.504\n",
       "No. Observations:                  25   AIC:                             41.01\n",
       "Df Residuals:                      20   BIC:                             47.10\n",
       "Df Model:                           4                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept  -1.928e-17      0.101  -1.92e-16      1.000      -0.210       0.210\n",
       "z贷款余额          0.8913      0.232      3.837      0.001       0.407       1.376\n",
       "z应收贷款          0.2598      0.138      1.879      0.075      -0.029       0.548\n",
       "z贷款项目个数        0.0345      0.197      0.175      0.863      -0.376       0.445\n",
       "z固定资产投资       -0.3249      0.168     -1.937      0.067      -0.675       0.025\n",
       "==============================================================================\n",
       "Omnibus:                        0.316   Durbin-Watson:                   2.626\n",
       "Prob(Omnibus):                  0.854   Jarque-Bera (JB):                0.442\n",
       "Skew:                           0.220   Prob(JB):                        0.802\n",
       "Kurtosis:                       2.520   Cond. No.                         4.82\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "modelz = ols(\"z不良贷款~z贷款余额+z应收贷款+z贷款项目个数+z固定资产投资\", data=dfz).fit() # 拟合回归模型\n",
    "modelz.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$|\\bar \\beta_1| > |\\bar \\beta_4| > |\\bar \\beta_2| > |\\bar \\beta_3|$，说明应收贷款是预测不良贷款最重要的变量，而贷款项目个数则是最不重要的变量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x</th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>(贷款余额, 应收贷款, 固定资产投资)</td>\n",
       "      <td>102.202190</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>(贷款余额, 应收贷款, 贷款项目个数, 固定资产投资)</td>\n",
       "      <td>104.163946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>(贷款余额, 固定资产投资)</td>\n",
       "      <td>104.315035</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>(贷款余额, 应收贷款)</td>\n",
       "      <td>104.586108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>(贷款余额, 贷款项目个数, 固定资产投资)</td>\n",
       "      <td>106.227178</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>(贷款余额, 应收贷款, 贷款项目个数)</td>\n",
       "      <td>106.461332</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>(贷款余额,)</td>\n",
       "      <td>107.015904</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>(贷款余额, 贷款项目个数)</td>\n",
       "      <td>108.942245</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>(应收贷款, 贷款项目个数)</td>\n",
       "      <td>114.032461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>(应收贷款, 贷款项目个数, 固定资产投资)</td>\n",
       "      <td>115.958123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>(应收贷款, 固定资产投资)</td>\n",
       "      <td>118.792875</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>(应收贷款,)</td>\n",
       "      <td>118.953871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>(贷款项目个数,)</td>\n",
       "      <td>121.249229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>(贷款项目个数, 固定资产投资)</td>\n",
       "      <td>123.247136</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>(固定资产投资,)</td>\n",
       "      <td>130.273379</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                               x         AIC\n",
       "11          (贷款余额, 应收贷款, 固定资产投资)  102.202190\n",
       "14  (贷款余额, 应收贷款, 贷款项目个数, 固定资产投资)  104.163946\n",
       "6                 (贷款余额, 固定资产投资)  104.315035\n",
       "4                   (贷款余额, 应收贷款)  104.586108\n",
       "12        (贷款余额, 贷款项目个数, 固定资产投资)  106.227178\n",
       "10          (贷款余额, 应收贷款, 贷款项目个数)  106.461332\n",
       "0                        (贷款余额,)  107.015904\n",
       "5                 (贷款余额, 贷款项目个数)  108.942245\n",
       "7                 (应收贷款, 贷款项目个数)  114.032461\n",
       "13        (应收贷款, 贷款项目个数, 固定资产投资)  115.958123\n",
       "8                 (应收贷款, 固定资产投资)  118.792875\n",
       "1                        (应收贷款,)  118.953871\n",
       "2                      (贷款项目个数,)  121.249229\n",
       "9               (贷款项目个数, 固定资产投资)  123.247136\n",
       "3                      (固定资产投资,)  130.273379"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (4) 用anova和AIC两种方法对模型进行比较和分析。\n",
    "# 使用AIC进行变量选择\n",
    "step_reg = pd.DataFrame() # 创建空数据框\n",
    "x = ['贷款余额', '应收贷款', '贷款项目个数', '固定资产投资'] # 自变量名称\n",
    "for i in range(1, len(x)+1): # 遍历自变量个数\n",
    "    for j in itertools.combinations(x, i): # 遍历所有非空子集\n",
    "        model = ols(f'不良贷款~{\"+\".join(j)}', data=df).fit() # 拟合回归模型\n",
    "        step_reg_model = pd.DataFrame({'x': [j], 'AIC': [model.aic]})\n",
    "        step_reg = pd.concat([step_reg, step_reg_model], ignore_index=True) # 将结果存入数据框\n",
    "step_reg.sort_values(by='AIC', inplace=True) # 按AIC值升序排列\n",
    "step_reg # 显示AIC值的数据框 AIC越小越好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df_resid</th>\n",
       "      <th>ssr</th>\n",
       "      <th>df_diff</th>\n",
       "      <th>ss_diff</th>\n",
       "      <th>F</th>\n",
       "      <th>Pr(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>21.0</td>\n",
       "      <td>63.376071</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>20.0</td>\n",
       "      <td>63.279194</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.096877</td>\n",
       "      <td>0.030619</td>\n",
       "      <td>0.862853</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   df_resid        ssr  df_diff   ss_diff         F    Pr(>F)\n",
       "0      21.0  63.376071      0.0       NaN       NaN       NaN\n",
       "1      20.0  63.279194      1.0  0.096877  0.030619  0.862853"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model1 = ols(\"不良贷款~贷款余额+应收贷款+贷款项目个数+固定资产投资\", data=df).fit() # 拟合回归模型\n",
    "model2 = ols(\"不良贷款~贷款余额+应收贷款+固定资产投资\", data=df).fit() # 拟合回归模型\n",
    "anova_lm(model2, model1, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用残差平方和作比较的结果表明，由于P>0.05，没有证据显示两个模型有显著差异，即两个模型的拟合优度没有显著差异。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>模型1</th>\n",
       "      <td>204.444292</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>模型2</th>\n",
       "      <td>198.712963</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            AIC\n",
       "模型1  204.444292\n",
       "模型2  198.712963"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({'AIC': [models.aic, modeld.aic]}, index=['模型1', '模型2']) # 显示AIC值"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "使用AIC的比较结果表明，由于model2的AIC值更小，意味着它比包含全部4个自变量的模型更好。"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mpg</th>\n",
       "      <th>cyl</th>\n",
       "      <th>disp</th>\n",
       "      <th>hp</th>\n",
       "      <th>drat</th>\n",
       "      <th>wt</th>\n",
       "      <th>qsec</th>\n",
       "      <th>vs</th>\n",
       "      <th>am</th>\n",
       "      <th>gear</th>\n",
       "      <th>carb</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>Mazda RX4</th>\n",
       "      <td>21.0</td>\n",
       "      <td>6</td>\n",
       "      <td>160.0</td>\n",
       "      <td>110</td>\n",
       "      <td>3.90</td>\n",
       "      <td>2.620</td>\n",
       "      <td>16.46</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Mazda RX4 Wag</th>\n",
       "      <td>21.0</td>\n",
       "      <td>6</td>\n",
       "      <td>160.0</td>\n",
       "      <td>110</td>\n",
       "      <td>3.90</td>\n",
       "      <td>2.875</td>\n",
       "      <td>17.02</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Datsun 710</th>\n",
       "      <td>22.8</td>\n",
       "      <td>4</td>\n",
       "      <td>108.0</td>\n",
       "      <td>93</td>\n",
       "      <td>3.85</td>\n",
       "      <td>2.320</td>\n",
       "      <td>18.61</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hornet 4 Drive</th>\n",
       "      <td>21.4</td>\n",
       "      <td>6</td>\n",
       "      <td>258.0</td>\n",
       "      <td>110</td>\n",
       "      <td>3.08</td>\n",
       "      <td>3.215</td>\n",
       "      <td>19.44</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Hornet Sportabout</th>\n",
       "      <td>18.7</td>\n",
       "      <td>8</td>\n",
       "      <td>360.0</td>\n",
       "      <td>175</td>\n",
       "      <td>3.15</td>\n",
       "      <td>3.440</td>\n",
       "      <td>17.02</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                    mpg  cyl   disp   hp  drat     wt   qsec  vs  am  gear   \n",
       "Mazda RX4          21.0    6  160.0  110  3.90  2.620  16.46   0   1     4  \\\n",
       "Mazda RX4 Wag      21.0    6  160.0  110  3.90  2.875  17.02   0   1     4   \n",
       "Datsun 710         22.8    4  108.0   93  3.85  2.320  18.61   1   1     4   \n",
       "Hornet 4 Drive     21.4    6  258.0  110  3.08  3.215  19.44   1   0     3   \n",
       "Hornet Sportabout  18.7    8  360.0  175  3.15  3.440  17.02   0   0     3   \n",
       "\n",
       "                   carb  \n",
       "Mazda RX4             4  \n",
       "Mazda RX4 Wag         4  \n",
       "Datsun 710            1  \n",
       "Hornet 4 Drive        1  \n",
       "Hornet Sportabout     2  "
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap10/exercise10_2.csv', encoding='gbk', index_col=0) # 读取数据\n",
    "df.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>          <td>disp</td>       <th>  R-squared:         </th> <td>   0.908</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.891</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   51.47</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>1.16e-12</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:05</td>     <th>  Log-Likelihood:    </th> <td> -160.91</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    32</td>      <th>  AIC:               </th> <td>   333.8</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    26</td>      <th>  BIC:               </th> <td>   342.6</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     5</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td> -233.6420</td> <td>  160.859</td> <td>   -1.452</td> <td> 0.158</td> <td> -564.293</td> <td>   97.008</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>mpg</th>       <td>    3.2249</td> <td>    3.104</td> <td>    1.039</td> <td> 0.308</td> <td>   -3.156</td> <td>    9.606</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>cyl</th>       <td>   30.3927</td> <td>   10.513</td> <td>    2.891</td> <td> 0.008</td> <td>    8.782</td> <td>   52.003</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>drat</th>      <td>  -13.5209</td> <td>   22.515</td> <td>   -0.601</td> <td> 0.553</td> <td>  -59.800</td> <td>   32.759</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>hp</th>        <td>    0.3208</td> <td>    0.219</td> <td>    1.467</td> <td> 0.154</td> <td>   -0.129</td> <td>    0.770</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>wt</th>        <td>   66.2331</td> <td>   16.106</td> <td>    4.112</td> <td> 0.000</td> <td>   33.128</td> <td>   99.338</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 2.922</td> <th>  Durbin-Watson:     </th> <td>   1.215</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.232</td> <th>  Jarque-Bera (JB):  </th> <td>   1.743</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td>-0.316</td> <th>  Prob(JB):          </th> <td>   0.418</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.047</td> <th>  Cond. No.          </th> <td>3.63e+03</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.<br/>[2] The condition number is large, 3.63e+03. This might indicate that there are<br/>strong multicollinearity or other numerical problems."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                   disp   R-squared:                       0.908\n",
       "Model:                            OLS   Adj. R-squared:                  0.891\n",
       "Method:                 Least Squares   F-statistic:                     51.47\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           1.16e-12\n",
       "Time:                        17:30:05   Log-Likelihood:                -160.91\n",
       "No. Observations:                  32   AIC:                             333.8\n",
       "Df Residuals:                      26   BIC:                             342.6\n",
       "Df Model:                           5                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept   -233.6420    160.859     -1.452      0.158    -564.293      97.008\n",
       "mpg            3.2249      3.104      1.039      0.308      -3.156       9.606\n",
       "cyl           30.3927     10.513      2.891      0.008       8.782      52.003\n",
       "drat         -13.5209     22.515     -0.601      0.553     -59.800      32.759\n",
       "hp             0.3208      0.219      1.467      0.154      -0.129       0.770\n",
       "wt            66.2331     16.106      4.112      0.000      33.128      99.338\n",
       "==============================================================================\n",
       "Omnibus:                        2.922   Durbin-Watson:                   1.215\n",
       "Prob(Omnibus):                  0.232   Jarque-Bera (JB):                1.743\n",
       "Skew:                          -0.316   Prob(JB):                        0.418\n",
       "Kurtosis:                       2.047   Cond. No.                     3.63e+03\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "[2] The condition number is large, 3.63e+03. This might indicate that there are\n",
       "strong multicollinearity or other numerical problems.\n",
       "\"\"\""
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model = ols('disp~mpg+cyl+drat+hp+wt', data=df).fit() # 拟合回归模型\n",
    "model.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的回归方程为：\n",
    "- $\\hat {disp} = -233.6420 + 3.2249*mpg + 30.3927*cyl - 13.5209*drat + 0.3208*hp + 66.2331*wt$\n",
    "\n",
    "回归系数的含义：\n",
    "- $\\hat \\beta_1 = 3.2249$：当其他自变量不变时，每加仑油行驶英里数每变动1个单位，行驶距离平均变动3.2249个单位；\n",
    "- $\\hat \\beta_2 = 30.3927$：当其他自变量不变时，汽缸数每变动1个单位，行驶距离平均变动30.3927个单位；\n",
    "- $\\hat \\beta_3 = -13.5209$：当其他自变量不变时，后轴比每变动1个单位，行驶距离平均变动-13.5209个单位；\n",
    "- $\\hat \\beta_4 = 0.3208$：当其他自变量不变时，总马力每变动1个单位，行驶距离平均变动0.3208个单位；\n",
    "- $\\hat \\beta_5 = 66.2331$：当其他自变量不变时，汽车自重每变动1个单位，行驶距离平均变动66.2331个单位。\n",
    "\n",
    "回归系数的t检验结果表明：\n",
    "- 只有cyl和wt的回归系数检验P<0.05，cyl和wt对disp有显著影响。\n",
    "- 其他自变量的回归系数检验P>0.05，其他自变量对disp的影响未通过显著性检验，但可能由于其他原因造成的（如多重共线性等）。\n",
    "\n",
    "模型F检验P<0.05，说明模型显著，$R^2_a$=0.891，说明自变量可以解释因变量误差的89.1%。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df</th>\n",
       "      <th>sum_sq</th>\n",
       "      <th>mean_sq</th>\n",
       "      <th>F</th>\n",
       "      <th>PR(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>mpg</th>\n",
       "      <td>1.0</td>\n",
       "      <td>342064.176106</td>\n",
       "      <td>342064.176106</td>\n",
       "      <td>203.546174</td>\n",
       "      <td>8.274923e-14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>cyl</th>\n",
       "      <td>1.0</td>\n",
       "      <td>56208.494068</td>\n",
       "      <td>56208.494068</td>\n",
       "      <td>33.447010</td>\n",
       "      <td>4.312831e-06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>drat</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2917.208608</td>\n",
       "      <td>2917.208608</td>\n",
       "      <td>1.735893</td>\n",
       "      <td>1.991529e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>hp</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2879.911804</td>\n",
       "      <td>2879.911804</td>\n",
       "      <td>1.713699</td>\n",
       "      <td>2.019584e-01</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>wt</th>\n",
       "      <td>1.0</td>\n",
       "      <td>28421.387124</td>\n",
       "      <td>28421.387124</td>\n",
       "      <td>16.912220</td>\n",
       "      <td>3.484945e-04</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Residual</th>\n",
       "      <td>26.0</td>\n",
       "      <td>43693.616976</td>\n",
       "      <td>1680.523730</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            df         sum_sq        mean_sq           F        PR(>F)\n",
       "mpg        1.0  342064.176106  342064.176106  203.546174  8.274923e-14\n",
       "cyl        1.0   56208.494068   56208.494068   33.447010  4.312831e-06\n",
       "drat       1.0    2917.208608    2917.208608    1.735893  1.991529e-01\n",
       "hp         1.0    2879.911804    2879.911804    1.713699  2.019584e-01\n",
       "wt         1.0   28421.387124   28421.387124   16.912220  3.484945e-04\n",
       "Residual  26.0   43693.616976    1680.523730         NaN           NaN"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "anova_lm(model, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 10.3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>月薪</th>\n",
       "      <th>工龄</th>\n",
       "      <th>性别</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>6548</td>\n",
       "      <td>3.2</td>\n",
       "      <td>男</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6629</td>\n",
       "      <td>3.8</td>\n",
       "      <td>男</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>6011</td>\n",
       "      <td>2.7</td>\n",
       "      <td>女</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6229</td>\n",
       "      <td>3.4</td>\n",
       "      <td>女</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>6746</td>\n",
       "      <td>3.6</td>\n",
       "      <td>男</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     月薪   工龄 性别\n",
       "0  6548  3.2  男\n",
       "1  6629  3.8  男\n",
       "2  6011  2.7  女\n",
       "3  6229  3.4  女\n",
       "4  6746  3.6  男"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('./exercise/chap10/exercise10_3.csv', encoding='gbk') # 读取数据\n",
    "df.head() # 显示前5行数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zmy/mambaforge/lib/python3.10/site-packages/scipy/stats/_stats_py.py:1736: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=15\n",
      "  warnings.warn(\"kurtosistest only valid for n>=20 ... continuing \"\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>           <td>月薪</td>        <th>  R-squared:         </th> <td>   0.215</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.155</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   3.562</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th>  <td>0.0817</td> \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:06</td>     <th>  Log-Likelihood:    </th> <td> -102.94</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    15</td>      <th>  AIC:               </th> <td>   209.9</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    13</td>      <th>  BIC:               </th> <td>   211.3</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     1</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td> 5249.6977</td> <td>  587.124</td> <td>    8.941</td> <td> 0.000</td> <td> 3981.293</td> <td> 6518.102</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>工龄</th>        <td>  327.1591</td> <td>  173.350</td> <td>    1.887</td> <td> 0.082</td> <td>  -47.340</td> <td>  701.658</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 1.152</td> <th>  Durbin-Watson:     </th> <td>   2.078</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.562</td> <th>  Jarque-Bera (JB):  </th> <td>   0.894</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td>-0.337</td> <th>  Prob(JB):          </th> <td>   0.639</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.012</td> <th>  Cond. No.          </th> <td>    33.7</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                     月薪   R-squared:                       0.215\n",
       "Model:                            OLS   Adj. R-squared:                  0.155\n",
       "Method:                 Least Squares   F-statistic:                     3.562\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):             0.0817\n",
       "Time:                        17:30:06   Log-Likelihood:                -102.94\n",
       "No. Observations:                  15   AIC:                             209.9\n",
       "Df Residuals:                      13   BIC:                             211.3\n",
       "Df Model:                           1                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept   5249.6977    587.124      8.941      0.000    3981.293    6518.102\n",
       "工龄           327.1591    173.350      1.887      0.082     -47.340     701.658\n",
       "==============================================================================\n",
       "Omnibus:                        1.152   Durbin-Watson:                   2.078\n",
       "Prob(Omnibus):                  0.562   Jarque-Bera (JB):                0.894\n",
       "Skew:                          -0.337   Prob(JB):                        0.639\n",
       "Kurtosis:                       2.012   Cond. No.                         33.7\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (1) 建立月薪与工龄的一元回归模型。\n",
    "model1 = ols('月薪~工龄', data=df).fit() # 拟合回归模型\n",
    "model1.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的回归方程为：\n",
    "- $\\hat {y} = 5249.6977 + 327.1591 \\times 工龄$\n",
    "\n",
    "回归系数的含义：\n",
    "- $\\hat \\beta_1 = 327.1591$：工龄每变动1年，月薪平均变动327.1591元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/zmy/mambaforge/lib/python3.10/site-packages/scipy/stats/_stats_py.py:1736: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=15\n",
      "  warnings.warn(\"kurtosistest only valid for n>=20 ... continuing \"\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<caption>OLS Regression Results</caption>\n",
       "<tr>\n",
       "  <th>Dep. Variable:</th>           <td>月薪</td>        <th>  R-squared:         </th> <td>   0.890</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Model:</th>                   <td>OLS</td>       <th>  Adj. R-squared:    </th> <td>   0.872</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Method:</th>             <td>Least Squares</td>  <th>  F-statistic:       </th> <td>   48.54</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Date:</th>             <td>Sat, 20 May 2023</td> <th>  Prob (F-statistic):</th> <td>1.77e-06</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Time:</th>                 <td>17:30:06</td>     <th>  Log-Likelihood:    </th> <td> -88.199</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>No. Observations:</th>      <td>    15</td>      <th>  AIC:               </th> <td>   182.4</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Residuals:</th>          <td>    12</td>      <th>  BIC:               </th> <td>   184.5</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Df Model:</th>              <td>     2</td>      <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Covariance Type:</th>      <td>nonrobust</td>    <th>                     </th>     <td> </td>   \n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td> 5732.0606</td> <td>  235.584</td> <td>   24.331</td> <td> 0.000</td> <td> 5218.766</td> <td> 6245.355</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>性别[T.男]</th>   <td>  458.6841</td> <td>   53.458</td> <td>    8.580</td> <td> 0.000</td> <td>  342.208</td> <td>  575.160</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>工龄</th>        <td>  111.2202</td> <td>   72.083</td> <td>    1.543</td> <td> 0.149</td> <td>  -45.836</td> <td>  268.276</td>\n",
       "</tr>\n",
       "</table>\n",
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "  <th>Omnibus:</th>       <td> 0.729</td> <th>  Durbin-Watson:     </th> <td>   2.334</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Prob(Omnibus):</th> <td> 0.695</td> <th>  Jarque-Bera (JB):  </th> <td>   0.647</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Skew:</th>          <td> 0.151</td> <th>  Prob(JB):          </th> <td>   0.723</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Kurtosis:</th>      <td> 2.028</td> <th>  Cond. No.          </th> <td>    35.2</td>\n",
       "</tr>\n",
       "</table><br/><br/>Notes:<br/>[1] Standard Errors assume that the covariance matrix of the errors is correctly specified."
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.summary.Summary'>\n",
       "\"\"\"\n",
       "                            OLS Regression Results                            \n",
       "==============================================================================\n",
       "Dep. Variable:                     月薪   R-squared:                       0.890\n",
       "Model:                            OLS   Adj. R-squared:                  0.872\n",
       "Method:                 Least Squares   F-statistic:                     48.54\n",
       "Date:                Sat, 20 May 2023   Prob (F-statistic):           1.77e-06\n",
       "Time:                        17:30:06   Log-Likelihood:                -88.199\n",
       "No. Observations:                  15   AIC:                             182.4\n",
       "Df Residuals:                      12   BIC:                             184.5\n",
       "Df Model:                           2                                         \n",
       "Covariance Type:            nonrobust                                         \n",
       "==============================================================================\n",
       "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
       "------------------------------------------------------------------------------\n",
       "Intercept   5732.0606    235.584     24.331      0.000    5218.766    6245.355\n",
       "性别[T.男]      458.6841     53.458      8.580      0.000     342.208     575.160\n",
       "工龄           111.2202     72.083      1.543      0.149     -45.836     268.276\n",
       "==============================================================================\n",
       "Omnibus:                        0.729   Durbin-Watson:                   2.334\n",
       "Prob(Omnibus):                  0.695   Jarque-Bera (JB):                0.647\n",
       "Skew:                           0.151   Prob(JB):                        0.723\n",
       "Kurtosis:                       2.028   Cond. No.                         35.2\n",
       "==============================================================================\n",
       "\n",
       "Notes:\n",
       "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
       "\"\"\""
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (2) 建立月薪与工龄和性别的二元回归模型。\n",
    "model2 = ols('月薪~工龄+性别', data=df).fit() # 拟合回归模型\n",
    "model2.summary() # 显示回归结果"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "估计的回归方程为：\n",
    "- $\\hat {y} = 5732.0606 + 111.2202 \\times 工龄 + 458.6841 \\times 性别$\n",
    "\n",
    "回归系数的含义：\n",
    "- $\\hat \\beta_1 = 111.2202$：当不考虑性别时，工龄每变动1年，月薪平均变动111.2202元；\n",
    "- $\\hat \\beta_2 = 458.6841$：当不考虑工龄时，性别为“男”时，月薪平均比性别为“女”的高458.6841元。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>df_resid</th>\n",
       "      <th>ssr</th>\n",
       "      <th>df_diff</th>\n",
       "      <th>ss_diff</th>\n",
       "      <th>F</th>\n",
       "      <th>Pr(&gt;F)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>13.0</td>\n",
       "      <td>802137.161364</td>\n",
       "      <td>0.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>12.0</td>\n",
       "      <td>112423.315638</td>\n",
       "      <td>1.0</td>\n",
       "      <td>689713.845725</td>\n",
       "      <td>73.619659</td>\n",
       "      <td>0.000002</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   df_resid            ssr  df_diff        ss_diff          F    Pr(>F)\n",
       "0      13.0  802137.161364      0.0            NaN        NaN       NaN\n",
       "1      12.0  112423.315638      1.0  689713.845725  73.619659  0.000002"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# (3) 对两个模型进行比较，观察引入性别这一哑变量对预测月薪是否有用。\n",
    "anova_lm(model1, model2, typ=1) # 方差分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于P<0.05，表明两个模型有显著差异。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>AIC</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>模型1</th>\n",
       "      <td>209.872926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>模型2</th>\n",
       "      <td>182.397802</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            AIC\n",
       "模型1  209.872926\n",
       "模型2  182.397802"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.DataFrame({'AIC': [model1.aic, model2.aic]}, index=['模型1', '模型2']) # 显示AIC值"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "哑变量回归模型的AIC值更小，意味着引入交通方便程度哑变量后，模型得到了改进,引入性别这一哑变量对预测月薪有显著提升。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
